(一)C#之数组

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
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值