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

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

  • 相关阅读:
    【像程序员一样思考】读书笔记4
    MFC ListControl 与 Excel 数据的导入导出
    OpenCV中findContours函数的使用
    十大算法
    qsort对二维数组的排序
    【像程序员一样思考】读书笔记3
    【像程序员一样思考】 读书笔记2
    【像程序员一样思考】 读书笔记1
    代码混淆
    布局优化
  • 原文地址:https://www.cnblogs.com/YuanSong/p/2600941.html
Copyright © 2020-2023  润新知