C#数组详解:一维、多维声明初始化与访问
本文深入解析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#编程的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













