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]开始的二维数组
            //使用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中显示二维数组

在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;

 

注:本文整理自网络!!!

posted on 2012-07-20 12:08  YuanSong  阅读(436)  评论(0编辑  收藏  举报

导航