C#数组详解:一维、多维声明初始化与访问

Ivy
Ivy
发布时间:2026-10-13 | 2人浏览过
原创

本文深入解析C#编程语言中一维与多维数组的声明、初始化及访问方式。内容包括区分值类型与引用类型在数组中的表现,演示不同场景下的初始化语法(含快捷写法),以及通过具体代码展示如何获取多维数组的元素总数和维度长度。

一维数组的声明与初始化

在C#中,声明一维数组的基本格式为“类型[] 变量名”。例如,声明一个包含5个整数的数组:

int[] array = new int[5];

该语句会创建一个包含从 array[0] 到 array[4] 五个元素的数组。运算符 new 负责分配内存,并将所有元素初始化为该类型的默认值(如整数默认为0)。字符串数组同理:

string[] stringArray = new string[6];

第1步:声明时进行初始化

如果在声明数组的同时赋予初值,则可以省略方括号内的维度说明符,编译器会自动根据初始化列表计算长度:

// 直接指定元素,长度自动推断
int[] array1 = new int[] { 1, 3, 5, 7, 9 };
string[] weekDays = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };

更简洁的快捷写法是直接在等号后提供列表:

int[] array2 = { 1, 3, 5, 7, 9 };
string[] weekDays2 = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };

第2步:延迟初始化与赋值限制

如果先声明数组变量而不初始化,后续赋值时必须使用 new 运算符。不能使用简写列表语法:

int[] array3;
array3 = new int[] { 1, 3, 5, 7, 9 }; // OK
//array3 = {1, 3, 5, 7, 9}; // 编译错误

值类型与引用类型数组的区别

数组的行为取决于其存储的是值类型还是引用类型:

SomeType[] array4 = new SomeType[10];
  • 值类型(如 struct): 创建包含10个独立元素实例的数组,每个元素拥有自己的内存空间并初始化为默认值。
  • 引用类型(如 class): 创建包含10个引用变量的数组,此时每个元素均初始化为 null(空引用),未指向具体的对象实例。

多维数组的定义与应用

C#支持超过一维的数组,通过在类型名称中使用逗号来表示维度。

第3步:声明二维与三维数组

二维数组使用单个逗号(, ),三维数组使用两个逗号(, , ):

// 四行两列的二维数组
int[,] array = new int[4, 2];

// 维度为 4x2x3 的三维数组
int[, ,] array1 = new int[4, 2, 3];

第4步:初始化并访问多维数组元素

多维数组同样可以在声明时初始化,既可以显式指定维度,也可以由编译器推断:

// 二维数组初始化(显式指定维度)
int[,] array2Da = new int[4, 2] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };

// 三维数组初始化
int[, ,] array3D = new int[,,] { 
    { { 1, 2, 3 }, { 4, 5, 6 } }, 
    { { 7, 8, 9 }, { 10, 11, 12 } } 
};

// 不指定维度的初始化
int[,] array4 = { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };

通过索引访问特定元素,注意多维数组的索引用逗号分隔:

System.Console.WriteLine(array2D[0, 0]);   // 输出: 1
System.Console.WriteLine(array2Db[1, 0]);  // 输出: three
System.Console.WriteLine(array3D[1, 1, 2]); // 输出: 12

第5步:获取数组长度与维度信息

可以使用 Length 属性获取总元素个数,或使用 GetLength(维度下标) 获取各维的长度:

var allLength = array3D.Length; // 获取所有元素总数
var total = 1;
for (int i = 0; i < array3D.Rank; i++) {
    total *= array3D.GetLength(i);
}
System.Console.WriteLine("{0} equals {1}", allLength, total); // 验证计算结果

第6步:修改与读取特定元素

可以直接给指定的多维坐标赋值,或将其读取到变量中:

array5[2, 1] = 25; // 修改值
int elementValue = array5[2, 1]; // 读取值

若创建新的多维数组但不赋值,所有元素将自动初始化为该类型的默认值:

int[,] array6 = new int[10, 10]; // 全部初始化为 0

总结

掌握 C# 数组的核心在于理解声明语法的多样性以及值/引用类型的差异。熟练运用 new 关键字进行延迟初始化,并利用快捷大括号语法简化一维/多维数据的创建,能显著提升代码效率。以上就是C#数组的详细使用指南,更多关于C#编程的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表