首页 > 编程笔记 > C#笔记 阅读:12

C#中的Array数组类(附带实例)

C# 中的数组是由 System.Array 类派生而来的引用对象,其关系图如下图所示:


图 1 数组与Array类的关系图

可以使用 Array 类中的各种属性或者方法对数组进行各种操作。例如可以使用 Array 类的 Length 属性获取数组元素的长度,可以使用 Rank 属性获取数组的维数。

Array 类的常用方法及说明如下表所示:

表:Array类的常用方法及说明
方法 说明
Copy 将数组中的指定元素复制到另一个 Array 中
CopyTo 从指定的目标数组索引处开始,将当前一维数组中的所有元素复制到另一个一维数组中
Exists 判断数组中是否包含指定的元素
GetLength 获取 Array 的指定维中的元素个数
GetLowerBound 获取 Array 中指定维度的下限
GetUpperBound 获取 Array 中指定维度的上限
GetValue 获取 Array 中指定位置的值
Reverse 反转一维 Array 中元素的顺序
SetValue 设置 Array 中指定位置的元素
Sort 对一维 Array 数组元素进行排序

【实例】使用数组编写程序打印杨辉三角。
使用数组打印杨辉三角,杨辉三角是一个由数字排列成的三角形,其本质特征是它的两条边都是由数字 1 组成的,其余的数则等于它上方的两个数之和,代码如下:
static void Main(string[] args)
{
    int[][] Array_int = new int[10][]; // 定义一个10行的二维数组
    // 向数组中记录杨辉三角的值
    for (int i = 0; i < Array_int.Length; i++) // 遍历行数
    {
        Array_int[i] = new int[i + 1]; // 定义二维数组的列数
        for (int j = 0; j < Array_int[i].Length; j++) // 遍历二维数组的列数
        {
            if (i <= 1) // 如果是数组的前两行
            {
                Array_int[i][j] = 1; // 将其设置为1
                continue;
            }
            else
            {
                if (j == 0 || j == Array_int[i].Length - 1) // 如果是行首或行尾
                    Array_int[i][j] = 1; // 将其设置为1
                else
                    Array_int[i][j] = Array_int[i - 1][j - 1] + Array_int[i - 1][j]; // 根据杨辉算法进行计算
            }
        }
    }
    for (int i = 0; i <= Array_int.Length - 1; i++) // 输出杨辉三角
    {
        // 循环控制每行前面打印的空格数
        for (int k = 0; k <= Array_int.Length - i; k++)
        {
            Console.Write("  "); // 输出空格
        }
        // 循环控制每行打印的数据
        for (int j = 0; j < Array_int[i].Length; j++)
        {
            Console.Write("{0}  ", Array_int[i][j]);
        }
        Console.WriteLine(); // 换行
    }
    Console.ReadLine();
}
程序运行结果为:
                      1 
                    1  1 
                  1  2  1 
                1  3  3  1 
              1  4  6  4  1 
            1  5  10  10  5  1 
          1  6  15  20  15  6  1 
        1  7  21  35  35  21  7  1 
      1  8  28  56  70  56  28  8  1 
    1  9  36  84  126  126  84  36  9  1 
在第 17 行代码中,j==0 判断是不是行首,j==Array_int[i].Length-1 判断是不是行尾,因为在杨辉三角中,每一行的行首和行尾都是 1,所以这里进行了特殊处理。

相关文章