在 C# 中,数组是用于存储相同数据类型的固定大小的元素集合。以下是数组的声明和初始化的多种方式:
1. 声明数组
在 C# 中,声明数组的语法如下:
dataType[] arrayName;
- dataType:表示数组元素的类型(例如
int、string等)。 - arrayName:数组的名称。
示例:
int[] numbers; // 声明一个整型数组
string[] names; // 声明一个字符串数组
2. 初始化数组
2.1 使用 new 关键字初始化
在声明数组后,使用 new 关键字为数组分配内存:
dataType[] arrayName = new dataType[size];
- size:指定数组的长度。
示例:
int[] numbers = new int[5]; // 创建一个长度为 5 的整型数组
这种方式会为数组分配默认值:
- 值类型(如
int,float):默认值为0。 - 引用类型(如
string,object):默认值为null。
2.2 在声明时初始化元素
直接在声明数组时赋值:
dataType[] arrayName = { value1, value2, value3, ... };
示例:
int[] numbers = { 1, 2, 3, 4, 5 }; // 初始化包含 5 个元素的整型数组
string[] names = { "Alice", "Bob", "Charlie" }; // 初始化字符串数组
2.3 使用 new 关键字并初始化元素
同时使用 new 和初始化:
dataType[] arrayName = new dataType[] { value1, value2, value3, ... };
示例:
int[] numbers = new int[] { 10, 20, 30, 40 };
2.4 延迟初始化
声明数组后再分配内存:
int[] numbers;
numbers = new int[5];
numbers[0] = 10;
numbers[1] = 20;
// 依此类推
3. 多维数组
3.1 矩形数组(二维数组)
矩形数组的每一行长度相同:
dataType[,] arrayName = new dataType[rows, columns];
示例:
int[,] matrix = new int[2, 3]; // 创建一个 2 行 3 列的矩阵
matrix[0, 0] = 1;
matrix[1, 2] = 5;
也可以直接初始化:
int[,] matrix = {
{ 1, 2, 3 },
{ 4, 5, 6 }
};
3.2 锯齿数组(交错数组)
锯齿数组的每一行可以有不同的长度:
dataType[][] arrayName = new dataType[rows][];
示例:
int[][] jaggedArray = new int[3][];
jaggedArray[0] = new int[2]; // 第一行有 2 个元素
jaggedArray[1] = new int[4]; // 第二行有 4 个元素
jaggedArray[2] = new int[3]; // 第三行有 3 个元素
直接初始化:
int[][] jaggedArray = {
new int[] { 1, 2 },
new int[] { 3, 4, 5, 6 },
new int[] { 7, 8, 9 }
};
4. 隐式类型数组
使用 var 声明隐式类型数组:
var arrayName = new[] { value1, value2, value3, ... };
- 数组的类型由编译器自动推断。
示例:
var numbers = new[] { 1, 2, 3 }; // 推断为 int[]
var names = new[] { "Alice", "Bob" }; // 推断为 string[]
5. 特殊类型的数组
5.1 常量数组
数组可以与 const 或 readonly 一起使用(但数组元素的值仍可更改):
readonly int[] numbers = { 1, 2, 3 };
5.2 参数数组
使用 params 关键字接收不确定数量的参数:
void PrintNumbers(params int[] numbers)
{
foreach (var number in numbers)
{
Console.WriteLine(number);
}
}
PrintNumbers(1, 2, 3, 4); // 输出:1 2 3 4
6. 总结
| 数组类型 | 声明方式 | 初始化方式 |
|---|---|---|
| 一维数组 | int[] arrayName; | int[] array = {1, 2, 3}; |
| 矩形数组(二维) | int[,] arrayName; | int[,] array = {{1, 2}, {3, 4}}; |
| 锯齿数组(二维) | int[][] arrayName; | int[][] array = {...}; |
| 隐式类型数组 | var arrayName = new[] {...}; | 自动推断类型 |
| 参数数组 | params int[] arrayName | 动态传递 |
通过这些方式,C# 提供了强大的数组声明和初始化能力,可用于各种场景的高效数据存储和访问。
1170

被折叠的 条评论
为什么被折叠?



