1.C# 中的数组
1.1 定义数组:
1.1.1 定义不初始化:数据类型[] 数组名称= new 数据类型[元素个数];
1.1.2 定义并初始化:数据类型[] 数组名称= new 数据类型[]{array1,array2};
1.2 System.Array 类
C#中提供了一个现成的名为System.Array的类,可以通过这个类提供的属性和方法对数组执行大多数操作。
1.2.1 System.Array 对象创建:Array类是一个抽象类,不能使用如下方式创建
Array array=new Array();
C# 中提供了CreateInstance()方法创建数组。例如:
Array array=CreateInstance((typeof(string),10));
该语句创建一个数组,该数组的名称array,类型为string类型,长度为10.
typeof用于获取类型的System.Type对象,Type实例可以表示类,值类型,数组,接口和枚举器等。
1.2.2 数组常用属性与方法
1) Length 显示数组所有维中的总个数。
Array array = Array.CreateInstance(typeof(string),10);
int length = array.Length;//计算数组中元素的个数
Console.WriteLine("Array数组长度..."+length);
结果显示: Array数组长度...10
2) BinarySearch 使用二进制搜索方法搜索一维排序数组中的某个值。
此方法为静态方法:Array.BinarySearch 方法 (Array, Object)
int arrayIndex = Array.BinarySearch(array, "name9");
如果找到 value,则为指定 array 中的指定 value 的索引。
如果找不到 value 且 value 小于 array 中的一个或多个元素,
则为一个负数,该负数是大于 value 的第一个元素的索引的按位求补。
如果找不到 value 且 value 大于 array 中的任何元素,
则为一个负数,该负数是(最后一个元素的索引加 1)的按位求补。
使用此方法前需要对数组进行排序。
3) Clear 将数组中的一组原色设为0 或者 Null
void Array.Clear(array, Index, Length);
4) Copy 将复制数组中从指定源索引开始的一组元素,并将其粘贴到另一个从指定目标索引开始的数组。
Array.Copy(sourceArray, destinationArray, length)
从第一个元素开始复制 Array 中的一系列元素,将它们粘贴到另一 Array 中(从第一个元素开始)。
长度指定为 32 位整数。
Array.Copy (Array, Int32, Array, Int32, Int32)
从指定的源索引开始,复制 Array 中的一系列元素,
将它们粘贴到另一 Array 中(从指定的目标索引开始)。长度和索引指定为 32 位整数。
5) copyTo 将一个数组中的所有元素复制到另一个数组中。
全部Copy,从指定的索引下标开始,注意此方位非静态执行方法。
array.CopyTo(dest,0);
Copy 与CopyTo方法示例代码段。
............................................
//创建array数组并初始化
Array array = Array.CreateInstance(typeof(string),10);
int length = array.Length;
for (int i = 0; i < length; i++) {
array.SetValue("name"+i,i);
}
//创建dest 数组,并从array数组复制
Array dest = Array.CreateInstance(typeof(string),5);
//索引从0开始,长度为5
Array.Copy(array, dest,5);
//索引从1开始,长度为5
Array.Copy(array, dest,1,5);
//全部Copy,从指定的索引下标开始,注意此方位非静态执行方法。
array.CopyTo(dest, 0);//注意目标数组与源数组长度一致。
//结果输出
for (int j = 0; j < dest.Length;j++ )
{
Console.WriteLine("dest" +j+"="+dest.GetValue(j));
}
............................................
6) CreateInstance 初始化Array类的新实例
Array array=Array.CreateInstance(typeof(string),10);
7) GetValue() 返回给定数组中指定元素的值,该元素可通过指定索引来指明。
Array.GetValue(int index); //索引从0 开始
8)SetValue() 将数组中的指定元素设置为指定值
Array.SetValue(Object value,int index);//索引从0 开始
9)IndexOf 返回给定值在一维数组中第一次出现时的位置索引
int index=Array.IndexOf(array, "name1");//索引从0开始...
10)LastIndexOf 返回给定值在一维数组中最后一次出现的位置索引。
int index=Array.LastIndexOf (array, "name1");//索引从0开始...
11)Reverse反转给定一维数组中元素的顺序
Array.Reverse(array);
12)Sort对数组中的元素进行排序
Array.Sort(array);
直接定义的数组与Array.CreateInstance()区别
直接定义的数组只支持上述少数几个属性和方法。不支持排序,反转等操作。因此,再简单的存储数据元素而不执行操作的
情况下可以使用直接定义的数组,而要对数组元素进行操作,则要采用Array.CreateInstance()创建数组。