领先的免费Web技术教程,涵盖HTML到ASP.NET

网站首页 > 知识剖析 正文

介绍 C# 中的数组类型、多维数组和数组操作

nixiaole 2025-01-20 15:39:06 知识剖析 14 ℃

C# 中的数组类型、多维数组和数组操作

1. 什么是数组?

  • 定义
    数组是存储固定大小的相同类型元素的集合。
  • 特性类型一致性:所有元素必须是相同的数据类型。固定大小:数组的大小在创建后不能更改。索引访问:通过索引访问元素,从 0 开始。

2. 声明和初始化数组

  1. 声明数组
  2. // 声明一个整数数组(大小未指定) int[] numbers; // 声明并初始化 int[] numbers = new int[5]; // 大小为5,默认值为0
  3. 初始化数组
  4. 使用直接赋值:int[] numbers = { 1, 2, 3, 4, 5 };
  5. 使用 new:int[] numbers = new int[] { 1, 2, 3, 4, 5 };

3. 多维数组

  1. 二维数组
  2. 定义和初始化:
  3. int[,] matrix = new int[2, 3]; // 2 行 3 列 int[,] predefinedMatrix = { { 1, 2, 3 }, { 4, 5, 6 } };
  4. 访问元素:
  5. Console.WriteLine(matrix[0, 1]); // 第一行第二列元素
  6. 三维及多维数组
  7. 定义:int[,,] threeDimArray = new int[2, 3, 4]; // 三维数组
  8. 特点
  9. 多维数组的元素通过多个索引访问,形状固定。
  10. 适合矩阵、立体数据存储。

4. 锯齿数组(Jagged Array)

  1. 定义
  2. 锯齿数组是数组的数组,其中每个子数组可以具有不同的长度。
  3. 声明和初始化
  4. int[][] jaggedArray = new int[3][]; // 定义一个包含三个数组的数组 jaggedArray[0] = new int[] { 1, 2, 3 }; jaggedArray[1] = new int[] { 4, 5 }; jaggedArray[2] = new int[] { 6 };
  5. 访问元素
  6. Console.WriteLine(jaggedArray[1][0]); // 第二个数组的第一个元素
  7. 适用场景
  8. 数据大小不均匀,例如学生成绩(不同学生有不同科目)。

5. 数组的常见操作

  1. 访问和修改元素
  2. int[] numbers = { 10, 20, 30 }; Console.WriteLine(numbers[1]); // 访问索引为1的元素 numbers[1] = 25; // 修改索引为1的元素
  3. 遍历数组
  4. 使用 for 循环:for (int i = 0; i < numbers.Length; i++) { Console.WriteLine(numbers[i]); }
  5. 使用 foreach 循环:foreach (int number in numbers) { Console.WriteLine(number); }
  6. 数组排序
  7. Array.Sort(numbers); // 升序排序 Array.Reverse(numbers); // 降序排列
  8. 查找元素
  9. int index = Array.IndexOf(numbers, 30); // 查找值为30的索引
  10. 复制数组
  11. 使用 Array.Copy:int[] destination = new int[5]; Array.Copy(numbers, destination, numbers.Length);
  12. 使用 Clone:int[] clonedArray = (int[])numbers.Clone();
  13. 动态调整大小
  14. Array.Resize(ref numbers, 10); // 调整大小到10

6. 数组的优缺点

  • 优点
    • 高效的索引访问。
    • 固定大小,内存连续分配,访问速度快。
  • 缺点
    • 固定大小限制了动态需求。
    • 插入和删除操作效率低。

7. 数组与集合的区别

特性

数组

集合

大小

固定,定义后不可更改

动态,可根据需求自动调整

类型限制

元素类型必须一致

允许不同的元素类型

操作复杂度

插入、删除较为复杂

插入、删除较为简单

性能

更高效,适合大批量数据操作

通常较数组稍慢


8. 示例代码:多维数组操作

using System;

class Program
{
    static void Main()
    {
        // 定义二维数组
        int[,] matrix = { { 1, 2, 3 }, { 4, 5, 6 } };

        // 遍历二维数组
        for (int i = 0; i < matrix.GetLength(0); i++) // 遍历行
        {
            for (int j = 0; j < matrix.GetLength(1); j++) // 遍历列
            {
                Console.Write(matrix[i, j] + " ");
            }
            Console.WriteLine();
        }

        // 访问特定元素
        Console.WriteLine("元素 [1,2] 是: " + matrix[1, 2]);
    }
}

9. 总结

  1. 数组类型
  2. 包括一维数组、多维数组(矩阵)、和锯齿数组(不规则数据结构)。
  3. 操作灵活性
  4. 提供了丰富的操作方法,如排序、查找、复制等。
  5. 选择场景
  6. 数组适合处理固定大小、类型一致的结构化数据。
  7. 如果需要动态大小、复杂数据结构,推荐使用集合(如 List、Dictionary)。

数组是 C# 中基本而重要的存储结构,理解其特性和操作有助于高效编写代码。

最近发表
标签列表