数组是 C# 中最基础的一类数据结构,适合存放一组“类型相同、数量固定”的数据。本文按实际使用顺序整理数组的核心知识:先看它是什么,再看怎么声明和初始化,最后用几个高频操作把日常写法串起来,方便你在入门阶段直接上手。
什么是 C# 数组
数组用于存储相同类型的元素集合。在 C# 里,数组属于引用类型,这意味着数组变量本身保存的是对内存中数组对象的引用,而不是整组数据的拷贝。

数组中的元素通过索引访问,索引从 0 开始。按照结构不同,数组可以是一维数组、多维数组,或者交错数组。本文重点覆盖最常见的一维数组和基础多维数组写法。
数组有哪些特点
- 固定长度:数组一旦创建,长度就不能再改变。
- 同类型元素:同一个数组中的元素必须是相同类型。
- 索引访问:可以通过下标快速读取或修改元素,起始索引为
0。
数组怎么声明
在 C# 中,数组的声明方式比较直接。你可以先声明变量,也可以在声明的同时完成分配和初始化。
单维数组声明
// 声明一个整型数组
int[] intArray;
// 或者直接初始化数组
int[] intArray = new int[5];
这里的 new int[5] 表示创建一个长度为 5 的整型数组。长度确定后,这个数组就不能扩容。
多维数组声明
// www.ja vascriptcn.com code example
// 声明一个二维数组
int[,] multiDimArray = new int[3, 4];
// 或者直接初始化
int[,] multiDimArray = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
如果你需要按“行、列”组织数据,可以使用二维数组。上面的例子中,new int[3, 4] 表示 3 行 4 列。
隐式类型数组
// 使用var关键字声明数组,编译器会根据初始化的值推断出数组的类型
var stringArray = new[] {"Hello", "World"};
这种写法适合初始化值已经很明确的场景。编译器会根据元素内容推断出数组类型,这里推断结果就是字符串数组。
数组如何初始化
数组初始化常见有两种思路:声明时直接给值,或者先创建数组,再按索引逐个赋值。
直接初始化
// 直接初始化一个整型数组
int[] numbers = {1, 2, 3, 4, 5};
// 初始化一个字符串数组
string[] names = {"Alice", "Bob", "Charlie"};
当数据在编写代码时就已经确定,这种写法最简洁。
分步初始化
// 先声明数组,然后逐个赋值
int[] scores = new int[3];
scores[0] = 90;
scores[1] = 85;
scores[2] = 95;
如果数组长度已知,但元素值要分多步填入,可以采用这种方式。它在处理输入结果、计算结果或后续赋值时更常见。
如何访问数组元素
访问数组元素依赖索引。因为索引从 0 开始,所以第一个元素是 [0],最后一个元素通常写成 [数组名.Length - 1]。
int[] grades = {92, 85, 76, 88, 91};
// 访问第一个元素
Console.WriteLine(grades[0]); // 输出: 92
// 访问最后一个元素
Console.WriteLine(grades[grades.Length - 1]); // 输出: 91
这也是初学者最容易出错的地方之一:数组长度是元素个数,但最后一个可访问索引一定比长度小 1。
数组的常用操作
理解声明和初始化之后,接下来要掌握的就是几个最常用的数组操作:取长度、遍历、复制和排序。

获取数组长度
可以通过 Length 属性获取数组长度。
int[] values = {10, 20, 30, 40, 50};
Console.WriteLine(values.Length); // 输出: 5
遍历数组
数组遍历最常见的是 for 和 foreach 两种写法,它们适合的场景略有不同。
for 循环遍历
int[] numbers = {1, 2, 3, 4, 5};
for (int i = 0; i < numbers.Length; i++)
{
Console.WriteLine(numbers[i]);
}
for 适合你既要访问元素,也要使用索引位置的情况。
foreach 循环遍历
int[] numbers = {1, 2, 3, 4, 5};
foreach (var number in numbers)
{
Console.WriteLine(number);
}
foreach 写法更简洁,适合只关心元素本身、不关心下标的场景。
复制数组
复制数组可以使用 Array.Copy 方法:
// www.ja vascriptcn.com code example
int[] source = {1, 2, 3, 4, 5};
int[] destination = new int[5];
Array.Copy(source, destination, 5);
// 打印destination数组的内容
foreach (var item in destination)
{
Console.WriteLine(item);
}
这里的 5 表示复制 5 个元素。实际使用时,目标数组通常需要先准备好足够的空间。
数组排序
如果只是对数组进行基础升序排序,可以直接使用 Array.Sort。
int[] numbers = {5, 3, 8, 1, 2};
Array.Sort(numbers);
foreach (var number in numbers)
{
Console.WriteLine(number);
}
执行后,数组中的元素会按从小到大的顺序重新排列。
什么时候适合使用数组
如果你面对的是一组类型统一、数量固定,并且需要按索引快速访问的数据,数组通常是最直接的选择。C# 中数组的核心规则并不复杂:先确定元素类型和长度,再根据场景选择初始化方式,后续结合 Length、循环、Array.Copy 和 Array.Sort 等常用操作即可完成大部分基础任务。
对于入门学习来说,先把一维数组的声明、赋值、访问和遍历写熟,再进一步理解多维数组,会更容易建立稳定的使用习惯。









