(一)C#之数组

来源:互联网 发布:js undefined null nan 编辑:程序博客网 时间:2024/06/15 00:05

C#中的数组的使用

一维数组

  • 首先我们来看一下如何声明以及创建数组呢?
    创建数组的方法如下:
    数组元素类型[] 数组名 = new 数组元素类型[数组元素个数]
    对应的代码实例如下:

            const int arrayNum = 4;        int[] intArray = new int[arrayNum];

    注意点:
    我们看一下数组创建后内存的分配情况:
    一维数组空间
    上图中的数组的首地址存放在数组名中哦~

  • 然后我们来看一下一维数组中 Length 的使用!
    Length用于得到数组元素的个数,用法如下:
    数组名.Length
    代码实例:

     Console.WriteLine(intArray.Length);//这时候控制台会打印数组大小 4
  • 最后我们看看如何初始化数组
    一般的如果数组是基本数据类型,系统会赋予每个元素一个默认值。
    初始化数组的方法有如下两种:

    1. 初始化方法1:
      第一种方式也是最直接的方式,实例代码如下:

              for (int i = 0; i < intArray.Length; i++) {             intArray[i]=i+1;        }
    2. 初始化方法2:
      第二种方法是在数组声明的同时初始化数组:

      • 可以有一下三种形式,比如第一种:

                int[] intArray = new int[arrayNum]{1,2,3,4};
      • 第二种与第一种不同的是不同的是,它可以省略不写 [ ] 里面数组的大小:

                int[] intArray = new int[]{1,2,3,4,5,6};
      • 第三种方法是可以省略关键字 new,代码如下:

                int[] intArray ={1,2,3,4,5,6};

二维数组

  • 二维数组的声明以及创建
    二维数组的声明以及创建相对于一维数组来说要复杂一些,创建二维数组有如下两种方式:

    1. 方法一
      说明:通过这种方式创建出来的数组称为 规则状二维数组 ,所以创建这个 数组的第二个参数必须要指定大小(也就是下面[3, 4]中的4)。

              int [,]intArray =new int[3,4];
    2. 方法二
      说明:通过这种方式创建出来的数组称为 锯齿状数组 ,所以创建这个数组的第二个参数是不写的,如下代码:

              int[][] intArray = new int[3][]; 

      也就是说构成这歌二维数组的以为数组的不必有相同的大小。

  • Length的使用
    对于Length的使用,我们要记住以下两点,(1).对与规则数组,我们得到的是这个二维数组包含的数组的中个数:如int [,]intArray =new int[3,4];,那么intArray.Length得到的值为3*4=14;(2)。对于不规则数组,我们得到的是这个锯齿状数组中含有的一维数组的个数,如int[][] intArray = new int[3][];,则对应的intArray.Length的值就是3了。
  • 二维数组的初始化
    二维数组的初始化对应的有如下三种方式:

    1. 初始化方法一

      • 锯齿状二维数组的初始化
      static void Main(string[] args){    int[][] intArray = new int[3][];    for (int i = 0; i < intArray.Length; i++) {        intArray[i] = new int[i + 1];//创建二维数组中每个一维数组的个数        for (int j = 0; j < intArray[i].Length; j++) {            intArray[i][j] = i + j;        }    }    for (int i = 0; i < intArray.Length; i++){        for (int j = 0; j < intArray[i].Length; j++){            Console.Write(intArray[i][j]+" ");        }        Console.WriteLine();    }    /**     * 打印的结果为     * 0     * 1 2     * 2 3 4     */}
      • 规则的二维数组初始化
      static void Main(string[] args){    int[,] intArray = new int[3,4];    for (int i = 0; i < 3; i++) {        for (int j = 0; j < 4; j++) {            intArray[i,j] = i + j;        }    }    for (int i = 0; i < 3; i++){        for (int j = 0; j < 4; j++){            Console.Write(intArray[i,j]+" ");        }        Console.WriteLine();    }    /**     * 打印的结果为     * 0 1 2 3     * 1 2 3 4     * 2 3 4 5     */}
    2. 初始化方法2(规则数组)
      第二种方法也是在数组创建的时候进行初始化,有一下三种形式:

      • 指定二维数组的大小

                int[,] intArray = new int[2,3]{{1,2,3},{4,5,6}};        /**         * 打印的结果为         * 1 2 3         * 4 5 6         */
      • 不指定二维数组的大小

                int[,] intArray = new int[,] { { 1, 2, 3 }, { 4, 5, 6 } ,{7,8,9}};        /**         * 打印的结果为         * 1 2 3         * 4 5 6         * 7 8 9         */
      • 省略 new 关键字

                int[,] intArray = { { 1, 2, 3 }, { 4, 5, 6 } ,{7,8,9}};        /**         * 打印的结果为         * 1 2 3         * 4 5 6         * 7 8 9         */
    3. 初始化方法三(不规则数组)

      • 依次初始化二维数组中的每个一维数组
            static void Main(string[] args)    {        int[][] intArray = new int[2][];        //依次初始化二维数组中的每个一维数组        intArray[0] = new int[] { 1, 2, 3, 4 };        intArray[1] = new int[] { 1, 2 };        for (int i = 0; i < intArray.Length; i++)        {            for (int j = 0; j < intArray[i].Length; j++)            {                Console.Write(intArray[i][j] + " ");            }            Console.WriteLine();        }        /**         * 打印的结果为         * 1 2 3 4         * 1 2         */    }

数组与System.Array

System.Array:是所有数组类型的抽象基类型,所有的数组类型都是由它派生而来,任何数组都可以使用它说具有的方法和属性。

  • System.Array所具有的属性和方法如下
    (1). Length属性用以获取数组的长度(具体用法见上文)。
    (2). (要是规则数组)数组名.GetLength(n)方法用于获取第n维的数组的长度。
    (3). Sort方法可以对数组进行生序排序。
    (4). Reverse 方法把数组的元素进行反序。

foreach语句

foreach循环用于遍历集合中的每个元素。被遍历的集合包括C#数组,System.Collection名称空间中的集合类,以及用户自定义的集合类(可以是任何支持IEnumerable接口的集合类)。示例代码如下:

        static void Main(string[] args)        {            int[] intArray = new int[]{ 4, 5, 6 };            foreach(int i in intArray){                Console.Write(i + " ");            }            Console.WriteLine();            /**             * 输出的结果为             * 4 5 6             */        }

动态数组ArrayList

  • ArrayList在System.Collections命名空间中。
  • ArrayList数组是可以动态扩充的(Array的容量是固定的)。
  • ArrayList提供提供添加,插入,移除某一范围元素的方法。
  • ArrayList数组是一维的。

我们看一下下面的程序实例:

    class Program    {        static void Main(string[] args)        {            ArrayList arrayList = new ArrayList();            arrayList.Add(1);                     //添加操作            arrayList.Add(2);            arrayList.Add(3);            arrayList.Add(4);            printArrayList(arrayList);            //输出结果 1 2 3 4            arrayList.Insert(2,30);            printArrayList(arrayList);            //输出结果 1 2 30 3 4            arrayList.RemoveRange(1, 3);            printArrayList(arrayList);            //输出结果 1 4        }        public static void printArrayList(ArrayList arrayList) {            for (int i = 0; i < arrayList.Count; i++) {                Console.Write(arrayList[i]+ " ");            }            Console.WriteLine();        }    }

在printArrayList这个函数中,我实现了ArrayList的遍历,其实除了上面的那种方法之外,还有其他的两种方法:

  • 方法一

        public static void printArrayList(ArrayList arrayList) {        IEnumerator ie = arrayList.GetEnumerator();        while (ie.MoveNext())         {             Console.Write(ie.Current.ToString() + " ");         }        Console.WriteLine();    }
  • 方法二

        public static void printArrayList(ArrayList arrayList) {        foreach (Object obj in arrayList) {            Console.Write(obj.ToString()+" ");        }        Console.WriteLine();    }

    总结

    以上的所有知识点基本就是C#数组的一些基本用法了!

2 0
原创粉丝点击