C#:二维三维图形绘制工程实例宝典
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.1.4 数组类型

数组类型是由抽象基类System.Array派生的引用类型,它代表一组相同类型变量的集合,其中的每一个变量称为数组的元素。数组元素可以为任意类型,包括数组类型。对数组元素的访问是通过数组下标来实现的。C#数组的下标从0开始,即第一个元素对应的下标是0,以后元素下标逐个递增。C#的数组定义要注意如下的事项。

● 在声明一个数组时,方括号必须跟在类型后面,而不能跟在变量名后面,例如:"int[] color;" 不能写成 "int color[];"。

● 可以不指定数组的大小,这样可以指定任意长度的数组,例如:

        int[] color;。

当然,也可以指定数组的长度,如:

        int[5] color;

● 可以声明包含数组的数组,即交错数组。

在C#中,支持的数组包括:一维数组、多维数组(矩形数组)和数组的数组(交错数组)。

1.一维数组和多维数组

声明一个由3个整型元素组成的一维数组如下。

        int[] a=new int[3];

为每个数组元素赋值,以完成初始化。

        a[0]=1;
        a[1]=2;
        a[2]=3;

声明一个2行2列的二维数组如下。

        int[,] a=new int[2,2];

为每个数组元素赋值,以完成初始化。

        a[0,0]=1;
        a[0,1]=2;
        a[1,0]=3;
        a[1,1]=4;

声明一个三维(3、2和2)数组如下。

        int[,,] b=new int[3,2,2];

可以在声明数组时直接将其初始化,这时不需要指明数组的长度,也可以指明数组的大小,如:

// 声明一个含3个元素的一维整型数组

        int[] b=new int[]{1 , 2 , 3};
        int[] b=new int[3]{1 , 2 , 3};
        int[] b={1 , 2 , 3};
        // 含3个元素的一维字符串数组
        string[] c={"one" , "two" , "three"};
        string[] c=new string[3] {"one" , "two" , "three"};
        // 含6个元素的二维整型数组
        int[,] c=new int[,]{{1 , 2} , {3 , 4} , {5 , 6}};
        // 含6个元素的二维字符串数组
        string[,] d=new string[,]{{"one","two"},{"three","four"},{"five","six"}};
        string[,] d={{"one","two"},{"three","four"},{"five","six"}};

也可以先声明一个数组变量,然后再初始化,这时必须使用new运算符。例如:

        int[]d;            // 先声明一维数组变量
        d=new int[]{1,2,3};             // 再初始化
        d={1,2,3};               // 错误,没有使用new运算符
        int[,]e;                 // 先声明二维数组变量
        e=new int[,]{{1,2},{3,4},{5,6}};      //再初始化

[示例Example1_1_3] 使用多维数组

        using System;
        class TestMutiArray
        {
      public static void Main()
      {
        string[] course={"C#","Data Structure","Software engineering"};
        Disp(course);
      }
      static void Disp(string[] arr)
      {
        for(int i=0; i<arr.length; i++)
        {
          Console.WriteLine("course[{0}]={1}", i, arr[i]);
        }
      }
        }
        输出结果是
        course[0]=C#
        course[1]=Data Structure
        course[2]=Software engineering

2.交错数组

交错数组是指数组元素又是一个数组,即数组的数组。

声明一个由3个元素组成的一维数组,其中每个元素又是一个一维整型数组,如下:

        int[][] a=new int[3][];

必须初始化a的元素后才可以使用它。初始化元素如下所示:

        a[0]=new int[3];
        a[1]=new int[2];
        a[2]=new int[2];

每个元素又是一个一维整型数组。第一个元素a[0]是由3个整数组成的一维数组,第二个元素a[1]是由2个整数组成的一维数组,而第三个元素a[2]是由2个整数组成的一维数组。

也可以直接初始化数组元素,在这种情况下不需要数组大小,例如:

        a[0]=new int[] {1, 3, 5};
        a[1]=new int[] {0, 2};
        a[2]=new int[] {10, 20};

也可以在声明数组时将其初始化,例如:

        int[][] a=new int[][]
      { new int[] {1, 3, 5},
        new int[] {0, 2},
        new int[] {10, 20}
        };

[示例Example1_1_4] 使用交错数组

        using System;
        class TestJagArray
        {
      static void Main(string[] args)
      {
        int[][] jagArray=new int[2][];
        jagArray[0]=new int[5];
        jagArray[1]=new int[3];
        //Assign value to each member of JagArray
        for(int i=0; i < jagArray.GetLength(0); i++)
        {
        for(int j=0; j < jagArray[i].Length; j++)
            jagArray[i][j]=i+j;
        }
        //Read value of each member of JagArray
        for(int k=0; k < 2; k++)
        {
          Console.WriteLine("jagArray[{0}]: ", k);
          for(int m=0; m < jagArray[k].Length; m++)
              Console.Write("{0,-3}", jagArray[k][m]);
          Console.WriteLine();
        }
      }
        }

输出结果为

        jagArray[0]:
        0   1   2   3   4
        jagArray[1]:
        1   2   3