Array类
ns:System
Array是一个抽象类 表示数组 提供了创建、查找、删除、排序、修改等应用于数组的操作 此类没有公有的实例构造函数 可以使用静态方法CreateInstance创建Array实例 数组一旦创建 则不能在后来修改其长度 长度就是数组存储的元素个数
Array类的静态方法
CreateInstance静态方法
用于创建数组实例 你可以使用用类似int[] arr = new int[3]{1,2,3}这样的语法格式创建数组 也可以使用Array类的静态方法CreateInstance来创建数组
elementType:数组数据类型
length:数组长度 即元素个数
length1:二维数组中第0维度的元素个数 元素指行
length2:二维数组中第1维度的元素个数 元素指列
如以下创建了一个数组并设置了数组的元素
Array ary=Array.CreateInstance(); ary.SetValue(); ary.SetValue(); foreach (var item in ary) { Console.WriteLine(item);//return sam leo }
一般很少会创建三维甚至N维度的数组 这里列出使用CreateInstance静态方法来创建一个二维数组的例子 仅供参考
Array b=Array.CreateInstance(, );//创建一个int类型的 2行3列的二维数组 b.SetValue(, ,);//设置第0行第0列元素的值 b.SetValue(, , ); b.SetValue(, , ); b.SetValue(, , );//设置第1行第0列元素的值 b.SetValue(, , ); b.SetValue(, , ); int[,] Ary = (int[,])b; //按表格的形式循环打印出二维数组的元素 ; i <= Ary.GetUpperBound(); i++) { ; z <= Ary.GetUpperBound(); z++) { Console.Write(Ary[i, z].ToString().PadRight()); } Console.WriteLine(""); }
结果如图
BinarySearch静态方法
使用二进制搜索算法在参数提供的数组中搜索指定的元素 返回元素下标 可以指定搜索的起始下标和从起始下标开始的搜索的元素个数来搜索指定元素的位置 搜索不到返回-1
array:数组
value:元素对象
startIndex:搜索的起始下标
length:搜索的长度
comparer:比较元素时要使用的 IComparer 实现
Clear静态方法
将参数提供的数组的元素清除 并不真正清除元素而是将元素的值根据元素的类型设为对应的0、null、false
array:数组
index:元素的起始下标
length:要清除的元素个数 将从index指定的下标处开始清除 清除length提供的个数
string[] strAry={"a","b"}; Array.Clear(strAry, , );//从下标0开始清除元素 清除个数为两个 Console.WriteLine(strAry[]==null);//return true
Copy静态方法
将sourceArray数组的一部分元素复制到destinationArray数组中 源数组和接收拷贝元素的数组可以是不同类型的 但必须是可以转换的 如果一个引用类型的数组的元素被拷贝到另一个引用类型的数组中 则会发生浅拷贝 这意味着新数组存储的拷贝元素将是对源数组中对应的元素的引用
sourceArray:源数组
destinationArray:接收复制数据的数组
length:要copy的元素个数
sourceIndex:源数组元素的下标 将从此下标开始复制 可选
destinationIndex:接收复制数据的数组存储复制元素的开始处的索引 可选
string[] strAry={"a","b"}; ]; Array.Copy(strAry, newStrAry, strAry.Length); Console.WriteLine(newStrAry[]);//return a
IndexOf静态方法
在参数指定的数组中查找指定的元素 返回元素的下标 找不到返回-1
array:数组
value:查找的元素对象
startIndex:查找的起始下标 将从此处开始查找
length:查找的元素个数
LastIndexOf静态方法
与IndexOf方法类似 区别仅在于IndexOf是从数组最右边开始查找 LastIndexOf则从数组最左边开始查找
Reverse静态方法
倒转参数指定的数组的元素 可以指定startIndex和length 以倒转指定的元素
array:数组
startIndex:要倒转的元素的起始下标
length:要倒转元素的个数
Sort静态方法
对数组的元素执行排序 通过startIndex和length可以指定对数组的某一部分元素执行排序 可以传递一个IComparer对象以实现自定义的比较
array:数组
Keys:包含要排序的关键字的数组
items:包含与keys中每个键对应的项
comparer:比较元素时要使用的IComparer实现
startIndex:排序范围的起始索引
length:排序范围内的元素个数
Array类的实例方法
Clone方法
返回对当前数组的一个浅拷贝 如果数组是引用类型 则新的拷贝出来的数组会保持对原数组的元素的引用
CopyTo方法
拷贝当前数组的元素到参数指定的数组中 可以提供index参数 该参数指定要拷贝的元素到目标数组中的起始下标
string[] strAry={"a","b","c","d"}; ]; strAry.CopyTo(newStrAry, ); foreach (var item in newStrAry) { Console.WriteLine(item); }
GetEnumerator方法
返回一个IEnumerator对象 该对象可以从数组中读取元素
string[] strAry={"a","b","c","d"}; IEnumerator list= strAry.GetEnumerator(); while (list.MoveNext()) { Console.WriteLine(list.Current);//return a b c d }
GetUpperBound
获取指定维度中元素的总个数 元素个数从0开始计算 对于二维数组 参数为0则表示获取维度0的元素总个数 元素指行 参数为1则表示获取维度1的元素总个数 元素指列
GetLowerBound
获取指定维度中元素的最小个数 元素个数从0开始计算 对于二维数组 此方法一般都返回0 除非你自定义了基于非0索引的数组
GetLength方法
获取参数指定的数组的维度中的元素个数 下面的例子获取了二维数组中第0维度和1维度中的元素个数 0维度的元素指的是行 1维度的元素指的是列 此方法类似于GetUpperBound 只不过GetUpperBound是从0开始统计元素 而GetLength从1开始统计元素
, , }, { , , } }; ; i < Ary.GetLength(); i++)//Ary.GetLength(0)获取总行数 { ; z < Ary.GetLength(); z++)//Ary.GetLength(1)获取总列数 { Console.Write(Ary[i, z].ToString().PadRight()); } Console.WriteLine(""); }
虽然可以使用Length属性得到数组的元素个数 但如果是二维数组调用Length 则会得到每个维度中的元素的个数之和 即行总数+列总数
GetValue方法
根据参数指定的索引获取数组的元素
index:元素的索引
index1:二维数组的行索引
index2:二维数组的列索引
下面例子演示了获取二维数组中第0行第1列的元素
, , }, { , , } }; Console.WriteLine(Ary.GetValue(, ));//return 2
SetValue方法
设置或修改数组的元素
value:元素
index:元素索引
index1:二维数组的行索引
index2:二维数组的列索引
, , }; Ary.SetValue(, ); Console.WriteLine(Ary.GetValue());//return 100 , , }, { , , } }; Ary.SetValue(,,); Console.WriteLine(Ary.GetValue(,));//return 100