C#基础之数组
Int[] a ; //声明一维数组
Int[,] b;//声明二维数组
Int[][] c;//声明数组的数组,也称为锯齿数组
数组的每一个元素都分配在内存的托管堆上,数组只是保存了一个指向值的指针。数组元素是连续分配的,数组是引用类型。
数组声明赋值
如果数组是在声明后才进行赋值,必须通过new关键字和对应的数据类型。下列代码错误:
{int[] myArray = new int[4]; myArray={1,2,3,4};}
声明二维数组
Int[,] cells={{1,2,3},{4,5,6},{7,8,9}};
Int I =cells.GetLength(0);//获取第一维的长度
Int i= cells.GetUpperBound(0);
Int j =cells.GetLenght(1);//获取第二维的长度
Int j= cells.GetUpperBound(1);
初始化交错数组(锯齿)
Int [][] list =new int[2][];
List[0]=new int[3]{1,2,3};
List[1]=new int[5]{1,2,3,4,5};
Int[][] cells={
New int[] {1,2,3,4},
New int[] {4,5,6},
New int[] {7,8},
New int[] {9}
};
赋值
Int[][] Num=new int[6][];
For(int i=0;i<6;i++)
{
Num[i]=new int[7];
For (int j=0;j<7;j++)
{
Num[i][j]=j;
}
}
遍历锯齿数组
Foreach(int [] items in cells)
{
Foreach(int item in items)
{
Console.write(item);
}
}
动态定义数组长度
IList<int> iList=new List<int>();
For(int i=0;i<=10;i++)
{
iList.Add(i);
}
Int[] intArray=iList.ToArray<int>();
数组和集合可以执行带GetEumerator方法的IEumerable接口。GetEumerator方法返回一个执行IEumerable接口的枚举。
string[] s = new string[5] { "火车", "汽车", "飞机", "自行车", "轿车" };
IEnumerator myEnum = s.GetEnumerator();
while (myEnum.MoveNext())
{
string str = myEnum.Current.ToString();
Console.WriteLine(str);
}
Console.ReadKey();
//将两个一维数组合并成一个二位数组 char[] arr1 = new char[] { 'a', 'b', 'c', 'd' }; char[] arr2 = new char[] { 'e', 'f', 'g' }; char[,] arr3 = new char[2, 4]; //arr3 .Rank是获取arr3数组的维度=2 for (int i = 0; i < arr3.Rank; i++) { switch (i) { case 0: { for (int j = 0; j < arr1.Length; j++) { arr3[i, j] = arr1[j]; } break; } case 1: { for (int j = 0; j < arr2.Length; j++) arr3[i, j] = arr2[j]; break; } } } //循环输出 for (int i = 0; i < arr3.Rank; i++) { //arr3.GetUpperBound(arr3.Rank - 1)的作用是获取arr3的第arr3.Rank-1维的数组的索引上限 for (int j = 0; j < arr3.GetUpperBound(arr3.Rank - 1) + 1; j++) { Console.Write(arr3[i, j] + " "); } Console.WriteLine(); } Console.ReadKey();
//使用Array类创建下标不从[0,0]开始的二维数组 索引基于[1,2] //Array类允许将已创建的数组轻质转换成声明为int[]的数组。 int[] lengths = { 2, 4 }; int[] lowerBounds = { 1, 2 }; //CreateInstace方法的第一个参数表示数组的数据类型 //第二个参数表示包含要创建数组每个维度大小的数组 //第三个参数表示包含要创建数组缩影下限的数组 Array arrayList = Array.CreateInstance(typeof(int), lengths, lowerBounds); arrayList.SetValue(1, 1, 2); arrayList.SetValue(2, 1, 3); arrayList.SetValue(3, 1, 4); arrayList.SetValue(4, 1, 5); arrayList.SetValue(5, 2, 2); arrayList.SetValue(6, 2, 3); arrayList.SetValue(7, 2, 4); arrayList.SetValue(8, 2, 5); for (int i = 1; i < arrayList.GetLength(0) + 1; i++) { for (int j = 2; j < arrayList.GetLength(1) + 2; j++) { Console.Write(arrayList.GetValue(i, j) + " "); } Console.WriteLine(); } Console.ReadKey();
enum Colors { Red = 1, Green = 2, Blue = 4, Yellow = 8 } static void Main(string[] args) { //枚举 foreach (string colorName in Enum.GetNames(typeof(Colors))) { Console.WriteLine("{0}={1}", colorName, Convert.ToInt32(Enum.Parse(typeof(Colors), colorName))); } Console.WriteLine(); Colors myOrange = (Colors)Enum.Parse(typeof(Colors), "Red,Yellow");//强制转换 Console.WriteLine("{0}={1}",myOrange ,Convert .ToInt64 (myOrange )); Console.ReadKey(); }
在DataGridView中显示二维数组
string[,] grayArr = OperCls.CalcQulitRateString(); int RowNum = grayArr.GetLength(0);//获得第一维的长度 int ColumnNum = grayArr.GetLength(1);//获得第二维的长度 DataTable dt = new DataTable(); for (int i = 0; i < ColumnNum; i++) { dt.Columns.Add(i.ToString(), typeof(string)); } for (int i = 0; i < RowNum; i++) { DataRow dr = dt.NewRow(); for (int j = 0; j < ColumnNum; j++) { dr[j] = grayArr[i, j]; } dt.Rows.Add(dr); } dataGridView1.DataSource = dt;
注:本文整理自网络!!!