Array数组是同一数据类型的一组变量的集合。
名称 | 类型 | 说明 |
Rank | 只读属性 | 返回数组的维数。 |
Length | 只读属性 | 返回数组中所有元素的总个数 |
GetLength | 方法 | 返回数组中指定维数的元素个数。 |
GetLowerBound | 方法 | 返回数组中指定维数的下限。 |
GetUpperBound | 方法 | 返回数组中指定维数的上限。 |
Clone | 方法 | 返回一个新创建数组,该数组是源数组的一个浅拷贝。 |
CopyTo | 方法 | 将源数组中的元素拷贝到目的数组中。 |
Sort | 静态方法 | 对数组元素进行排序,数组元素必须实现ICompare接口。 |
BinarySearch | 静态方法 | 使用二分搜索法来搜索指定数组中的指定元素。该方法假定数组本身已经排好序。通常在调用BinarySearch前应首先调用Sort方法。 |
IndexOf | 静态方法 | 返回某个值在数组中第一次出现的索引值。 |
LastIndexOf | 静态方法 | 返回某个值在数组中最后一次出现的索引值。 |
Reverse | 静态方法 | 反转数组全部或部分元素顺序。 |
Copy | 静态方法 | 将一个数组中的部分元素拷贝到另一数组中,并根据需要进行适当转型。 |
CreateInstance | 静态方法 | 创建一个数组实例,它允许我们动态定义拥有任何类型、任何维数、任何上下限的数组。 |
Vb.Net |
Dim arrColor(3) As String '声明一个4个元素的定长数组 '第一种赋值方式,根据下标逐个赋值 arrColor(0) = "黑色" arrColor(1) = "白色" arrColor(2) = "黄色" arrColor(3) = "蓝色" '第二种,定义类型并直接初始化 Dim Nums() As Integer={1,2,3,4} '根据索引号遍历数组的每个元素 Proj.MsgDebug.Add("-------索引号遍历----------") For i As Integer = 0 To arrColor.Length - 1 Proj.MsgDebug.Add("arrColor({0})值为{1}",i,arrColor(i)) Next '根据元素来遍历数组 Proj.MsgDebug.Add("-------元素来遍历----------") For Each item As String In arrColor Proj.MsgDebug.Add(item) Next '二维数组 Dim arrCell(1, 2) As String '声明一个2行2列定长二维数组 '为第一行的各列赋值 arrCell(0, 0) = "A1" arrCell(0, 1) = "A2" arrCell(0, 2) = "A3" '为第二行的各列赋值 arrCell(1, 0) = "B1" arrCell(1, 1) = "B2" arrCell(1, 2) = "B3" '遍历所有数组 For i As Integer = 0 To arrCell.GetLength(0)-1 '行 For j As Integer = 0 To arrCell.GetLength(1)-1 '列 Proj.MsgDebug.Add("arrCell({0},{1})的值为:{2}",i,j,arrCell(i,j)) Next Next '第二种,定义一个数组的数组类型并直接初始化数组,在本质上他还是一维数组,只是每个数据元素都是一个数组,实现另外意义上的二维 Dim arrCell2()() As String={New String(){"A1","A2","A3"},New String(){"B1","B2"},New String(){"C1","C2","C3","C4"}} Proj.MsgDebug.Add("二维数组的维度:{0}",arrCell2.Rank) For i As Integer = 0 To arrCell2.Length-1 '数组的个数 For j As Integer = 0 To arrCell2(i).Length-1 '子数组的个数 Proj.MsgDebug.Add("arrCell2({0})({1})的值为:{2}",i,j,arrCell2(i)(j)) Next Next For Each arr As String() In arrCell2 '遍历子数组 For Each item As String In arr '遍历子数组中的元素 Proj.MsgDebug.Add(item) Next Next Dim arr3(2, 2, 3) As String '声明三维数组 '返回结果:-------索引号遍历---------- '返回结果:arrColor(0)值为黑色 '返回结果:arrColor(1)值为白色 '返回结果:arrColor(2)值为黄色 '返回结果:arrColor(3)值为蓝色 '返回结果:-------元素来遍历---------- '返回结果:黑色 '返回结果:白色 '返回结果:黄色 '返回结果:蓝色 '返回结果:arrCell(0,0)的值为:A1 '返回结果:arrCell(0,1)的值为:A2 '返回结果:arrCell(0,2)的值为:A3 '返回结果:arrCell(1,0)的值为:B1 '返回结果:arrCell(1,1)的值为:B2 '返回结果:arrCell(1,2)的值为:B3 '返回结果:二维数组的维度:1 '返回结果:arrCell2(0)(0)的值为:A1 '返回结果:arrCell2(0)(1)的值为:A2 '返回结果:arrCell2(0)(2)的值为:A3 '返回结果:arrCell2(1)(0)的值为:B1 '返回结果:arrCell2(1)(1)的值为:B2 '返回结果:arrCell2(2)(0)的值为:C1 '返回结果:arrCell2(2)(1)的值为:C2 '返回结果:arrCell2(2)(2)的值为:C3 '返回结果:arrCell2(2)(3)的值为:C4 '返回结果:A1 '返回结果:A2 '返回结果:A3 '返回结果:B1 '返回结果:B2 '返回结果:C1 '返回结果:C2 '返回结果:C3 '返回结果:C4 |
C# |
string[] arrColor = new string[4]; // 声明一个4个元素的定长数组 // 第一种赋值方式,根据下标逐个赋值 arrColor[0] = "黑色"; arrColor[1] = "白色"; arrColor[2] = "黄色"; arrColor[3] = "蓝色"; // 第二种,定义类型并直接初始化 int[] Nums = new[] { 1, 2, 3, 4 }; // 根据索引号遍历数组的每个元素 Proj.MsgDebug.Add("-------索引号遍历----------"); for (int i = 0; i <= arrColor.Length - 1; i++) Proj.MsgDebug.Add("arrColor({0})值为{1}", i, arrColor[i]); // 根据元素来遍历数组 Proj.MsgDebug.Add("-------元素来遍历----------"); foreach (string item in arrColor) Proj.MsgDebug.Add(item); // 二维数组 string[,] arrCell = new string[2, 3]; // 声明一个2行2列定长二维数组 // 为第一行的各列赋值 arrCell[0, 0] = "A1"; arrCell[0, 1] = "A2"; arrCell[0, 2] = "A3"; // 为第二行的各列赋值 arrCell[1, 0] = "B1"; arrCell[1, 1] = "B2"; arrCell[1, 2] = "B3"; // 遍历所有数组 for (int i = 0; i <= arrCell.GetLength(0) - 1; i++) // 行 { for (int j = 0; j <= arrCell.GetLength(1) - 1; j++) // 列 { Proj.MsgDebug.Add("arrCell({0},{1})的值为:{2}", i, j, arrCell[i, j]); } } // 第二种,定义一个数组的数组类型并直接初始化数组,在本质上他还是一维数组,只是每个数据元素都是一个数组,实现另外意义上的二维 string[][] arrCell2 = new[] { new string[] { "A1", "A2", "A3" }, new string[] { "B1", "B2" }, new string[] { "C1", "C2", "C3", "C4" } }; Proj.MsgDebug.Add("二维数组的维度:{0}", arrCell2.Rank); for (int i = 0; i <= arrCell2.Length - 1; i++) // 数组的个数 { for (int j = 0; j <= arrCell2[i].Length - 1; j++) // 子数组的个数 { Proj.MsgDebug.Add("arrCell2({0})({1})的值为:{2}", i, j, arrCell2[i][j]); } } foreach (string[] arr in arrCell2) // 遍历子数组 { foreach (string item in arr) // 遍历子数组中的元素 { Proj.MsgDebug.Add(item); } } string[,,] arr3 = new string[3, 3, 4]; // 声明三维数组 //返回结果:-------索引号遍历---------- //返回结果:arrColor(0)值为黑色 //返回结果:arrColor(1)值为白色 //返回结果:arrColor(2)值为黄色 //返回结果:arrColor(3)值为蓝色 //返回结果:-------元素来遍历---------- //返回结果:黑色 //返回结果:白色 //返回结果:黄色 //返回结果:蓝色 //返回结果:arrCell(0,0)的值为:A1 //返回结果:arrCell(0,1)的值为:A2 //返回结果:arrCell(0,2)的值为:A3 //返回结果:arrCell(1,0)的值为:B1 //返回结果:arrCell(1,1)的值为:B2 //返回结果:arrCell(1,2)的值为:B3 //返回结果:二维数组的维度:1 //返回结果:arrCell2(0)(0)的值为:A1 //返回结果:arrCell2(0)(1)的值为:A2 //返回结果:arrCell2(0)(2)的值为:A3 //返回结果:arrCell2(1)(0)的值为:B1 //返回结果:arrCell2(1)(1)的值为:B2 //返回结果:arrCell2(2)(0)的值为:C1 //返回结果:arrCell2(2)(1)的值为:C2 //返回结果:arrCell2(2)(2)的值为:C3 //返回结果:arrCell2(2)(3)的值为:C4 //返回结果:A1 //返回结果:A2 //返回结果:A3 //返回结果:B1 //返回结果:B2 //返回结果:C1 //返回结果:C2 //返回结果:C3 //返回结果:C4 |
Vb.Net |
'第二种,定义类型并直接初始化 Dim Nums() As Integer={2,6,3,4,3,0,-2} '排序 Array.Sort(Nums) Proj.MsgDebug.Add("-------排序后清单----------") Proj.MsgDebug.Add(String.Join(",",Nums)) '反转 Array.Reverse(Nums) Proj.MsgDebug.Add("-------反转后清单----------") Proj.MsgDebug.Add(String.Join(",",Nums)) Proj.MsgDebug.Add("3在数组中的位置{0}",Array.IndexOf(Nums,3)) Proj.MsgDebug.Add("3在数组中最后的位置{0}",Array.LastIndexOf(Nums,3)) '在使用BinarySearch之前必须先排序 Array.Sort(Nums) Proj.MsgDebug.Add("排序后的顺序:{0}",String.Join(",",Nums)) Proj.MsgDebug.Add("3在数组中的位置{0}",Array.BinarySearch(Nums,3)) '数组的浅拷贝 Dim arrCopy() As Integer=Nums.Clone() '修改第一个数组值 arrCopy(0)=9 Proj.MsgDebug.Add("拷贝数组修改后原数组清单:" & String.Join(",",Nums)) Proj.MsgDebug.Add("拷贝数组修改后清单:" & String.Join(",",arrCopy)) Dim arrEmpty(12) As Integer Nums.CopyTo(arrEmpty,3) Proj.MsgDebug.Add("新数组清单:" & String.Join(",",arrEmpty)) '创建一个动态数组 Dim myIntArray As Array = Array.CreateInstance(GetType(System.Int32), 5) '给动态数组赋值 For i As Integer = myIntArray.GetLowerBound(0) To myIntArray.GetUpperBound(0) myIntArray.SetValue(i + 1, i) Next '创建一个动态Object类型数组 Dim myObjArray As Array = Array.CreateInstance(GetType(System.Object), 5) '给动态数组赋值 For i As Integer = myObjArray.GetLowerBound(0) To myObjArray.GetUpperBound(0) myObjArray.SetValue(i + 26, i) Next Proj.MsgDebug.Add("整数数组:" & String.Join(",",myIntArray.CType(Of Integer()))) Proj.MsgDebug.Add("Object数组:" & String.Join(",",myObjArray.CType(Of Object()))) '将整数数组拷贝到Object数组中,从整数数组的首位开始复制,在Object数组的首位开始存储,数据仅拷贝一位 Array.Copy(myIntArray, myIntArray.GetLowerBound(0), myObjArray, myObjArray.GetLowerBound(0), 1) '将Object数组中最后2位数据,拷贝到整数数组的最后2位 Array.Copy(myObjArray, myObjArray.GetUpperBound(0) - 1, myIntArray, myIntArray.GetUpperBound(0) - 1, 2) Proj.MsgDebug.Add("修改后整数数组:" & String.Join(",",myIntArray.CType(Of Integer()))) Proj.MsgDebug.Add("修改后Object数组:" & String.Join(",",myObjArray.CType(Of Object()))) '二维数组 Dim arrCell(1, 2) As String '声明一个2行2列定长二维数组 '为第一行的各列赋值 arrCell(0, 0) = "A1" arrCell(0, 1) = "A2" arrCell(0, 2) = "A3" '为第二行的各列赋值 arrCell(1, 0) = "B1" arrCell(1, 1) = "B2" arrCell(1, 2) = "B3" '遍历所有数组 For i As Integer = arrCell.GetLowerBound(0) To arrCell.GetUpperBound(0) '行,注意GetLength的使用区别 For j As Integer = arrCell.GetLowerBound(1) To arrCell.GetUpperBound(1) '列 Proj.MsgDebug.Add("arrCell({0},{1})的值为:{2}",i,j,arrCell(i,j)) Next Next '返回结果:-------排序后清单---------- '返回结果:-2,0,2,3,3,4,6 '返回结果:-------反转后清单---------- '返回结果:6,4,3,3,2,0,-2 '返回结果:3在数组中的位置2 '返回结果:3在数组中最后的位置3 '返回结果:排序后的顺序:-2,0,2,3,3,4,6 '返回结果:3在数组中的位置3 '返回结果:拷贝数组修改后原数组清单:-2,0,2,3,3,4,6 '返回结果:拷贝数组修改后清单:9,0,2,3,3,4,6 '返回结果:新数组清单:0,0,0,-2,0,2,3,3,4,6,0,0,0 '返回结果:整数数组:1,2,3,4,5 '返回结果:Object数组:26,27,28,29,30 '返回结果:修改后整数数组:1,2,3,29,30 '返回结果:修改后Object数组:1,27,28,29,30 '返回结果:arrCell(0,0)的值为:A1 '返回结果:arrCell(0,1)的值为:A2 '返回结果:arrCell(0,2)的值为:A3 '返回结果:arrCell(1,0)的值为:B1 '返回结果:arrCell(1,1)的值为:B2 '返回结果:arrCell(1,2)的值为:B3 |
C# |
// 第二种,定义类型并直接初始化 int[] Nums = new[] { 2, 6, 3, 4, 3, 0, -2 }; // 排序 Array.Sort(Nums); Proj.MsgDebug.Add("-------排序后清单----------"); Proj.MsgDebug.Add(string.Join(",", Nums)); // 反转 Array.Reverse(Nums); Proj.MsgDebug.Add("-------反转后清单----------"); Proj.MsgDebug.Add(string.Join(",", Nums)); Proj.MsgDebug.Add("3在数组中的位置{0}", Array.IndexOf(Nums, 3)); Proj.MsgDebug.Add("3在数组中最后的位置{0}", Array.LastIndexOf(Nums, 3)); // 在使用BinarySearch之前必须先排序 Array.Sort(Nums); Proj.MsgDebug.Add("排序后的顺序:{0}", string.Join(",", Nums)); Proj.MsgDebug.Add("3在数组中的位置{0}", Array.BinarySearch(Nums, 3)); // 数组的浅拷贝 int[] arrCopy = Nums.Clone().CType<int[]>(); // 修改第一个数组值 arrCopy[0] = 9; Proj.MsgDebug.Add("拷贝数组修改后原数组清单:" + string.Join(",", Nums)); Proj.MsgDebug.Add("拷贝数组修改后清单:" + string.Join(",", arrCopy)); int[] arrEmpty = new int[13]; Nums.CopyTo(arrEmpty, 3); Proj.MsgDebug.Add("新数组清单:" + string.Join(",", arrEmpty)); // 创建一个动态数组 Array myIntArray = Array.CreateInstance(typeof(System.Int32), 5); // 给动态数组赋值 for (int i = myIntArray.GetLowerBound(0); i <= myIntArray.GetUpperBound(0); i++) myIntArray.SetValue(i + 1, i); // 创建一个动态Object类型数组 Array myObjArray = Array.CreateInstance(typeof(System.Object), 5); // 给动态数组赋值 for (int i = myObjArray.GetLowerBound(0); i <= myObjArray.GetUpperBound(0); i++) myObjArray.SetValue(i + 26, i); Proj.MsgDebug.Add("整数数组:" + string.Join(",", myIntArray.CType<int[]>())); Proj.MsgDebug.Add("Object数组:" + string.Join(",", myObjArray.CType<object[]>())); // 将整数数组拷贝到Object数组中,从整数数组的首位开始复制,在Object数组的首位开始存储,数据仅拷贝一位 Array.Copy(myIntArray, myIntArray.GetLowerBound(0), myObjArray, myObjArray.GetLowerBound(0), 1); // 将Object数组中最后2位数据,拷贝到整数数组的最后2位 Array.Copy(myObjArray, myObjArray.GetUpperBound(0) - 1, myIntArray, myIntArray.GetUpperBound(0) - 1, 2); Proj.MsgDebug.Add("修改后整数数组:" + string.Join(",", myIntArray.CType<int[]>())); Proj.MsgDebug.Add("修改后Object数组:" + string.Join(",", myObjArray.CType<object[]>())); // 二维数组 string[,] arrCell = new string[2, 3]; // 声明一个2行2列定长二维数组 // 为第一行的各列赋值 arrCell[0, 0] = "A1"; arrCell[0, 1] = "A2"; arrCell[0, 2] = "A3"; // 为第二行的各列赋值 arrCell[1, 0] = "B1"; arrCell[1, 1] = "B2"; arrCell[1, 2] = "B3"; // 遍历所有数组 for (int i = arrCell.GetLowerBound(0); i <= arrCell.GetUpperBound(0); i++) // 行,注意GetLength的使用区别 { for (int j = arrCell.GetLowerBound(1); j <= arrCell.GetUpperBound(1); j++) // 列 { Proj.MsgDebug.Add("arrCell({0},{1})的值为:{2}", i, j, arrCell[i, j]); } } //返回结果:-------排序后清单---------- //返回结果:-2,0,2,3,3,4,6 //返回结果:-------反转后清单---------- //返回结果:6,4,3,3,2,0,-2 //返回结果:3在数组中的位置2 //返回结果:3在数组中最后的位置3 //返回结果:排序后的顺序:-2,0,2,3,3,4,6 //返回结果:3在数组中的位置3 //返回结果:拷贝数组修改后原数组清单:-2,0,2,3,3,4,6 //返回结果:拷贝数组修改后清单:9,0,2,3,3,4,6 //返回结果:新数组清单:0,0,0,-2,0,2,3,3,4,6,0,0,0 //返回结果:整数数组:1,2,3,4,5 //返回结果:Object数组:26,27,28,29,30 //返回结果:修改后整数数组:1,2,3,29,30 //返回结果:修改后Object数组:1,27,28,29,30 //返回结果:arrCell(0,0)的值为:A1 //返回结果:arrCell(0,1)的值为:A2 //返回结果:arrCell(0,2)的值为:A3 //返回结果:arrCell(1,0)的值为:B1 //返回结果:arrCell(1,1)的值为:B2 //返回结果:arrCell(1,2)的值为:B3 |