C# 数组(Array)声明与使用

15.C# 数组(Array)声明与使用——《跟老吕学C#》
C# 数组(Array)的声明与使用
一、数组声明
二、数组初始化
三、数组访问
四、数组长度
五、数组遍历
六、多维数组
注意事项
七、数组作为参数传递
八、数组作为返回值
九、数组的复制
十、数组与集合类
十一、数组的安全使用
总结


C# 数组(Array)的声明与使用
在C#中,数组作为一种数据结构,主要用于存储相同类型的多个数据项,并通过连续的整数索引进行访问。这些索引从0开始并依次递增。接下来,我将详细解释如何在C#中声明和使用数组。

数组是一个固定大小的顺序集合,用于存储相同类型的元素。我们可以将数组视为同一类型变量的集合。

当声明数组变量时,我们并非声明如number0、number1等单独的变量,而是声明一个名为numbers的变量,用以指代整个数组。之后,通过numbers[0]、numbers[1]等形式来访问数组中的具体元素。这些元素是通过其索引值进行访问的。

所有数组都由连续的内存位置组成,其中第一个元素的地址最低,最后一个元素的地址最高。


一、数组声明
在C#中,可以使用以下语法声明一个数组:

dataType[] arrayName;
1
其中dataType是数组中元素的类型(如int, double, string等),arrayName是数组的名称。


二、数组初始化
在声明数组之后,我们需要为其分配内存空间来存储数据。这可以通过数组初始化来完成。有两种常见的初始化方式:

使用new关键字:
dataType[] arrayName = new dataType[arraySize];
1
这里的arraySize是一个整数,指定了数组中可以容纳的元素数量。

例如,声明一个可以存储5个整数的数组:

int[] numbers = new int[5];
1
在声明时直接初始化:
dataType[] arrayName = new dataType[] { value1, value2, ..., valueN };
1
或者简写为:

dataType[] arrayName = { value1, value2, ..., valueN };
1
例如,声明并初始化一个包含三个整数的数组:

int[] numbers = { 1, 2, 3 };
1

三、数组访问
一旦数组被初始化,我们就可以使用索引来访问或修改其中的元素。索引是从0开始的整数。

// 访问数组中的元素
int firstElement = numbers[0]; // firstElement 现在为 1

// 修改数组中的元素
numbers[0] = 10; // 数组的第一个元素现在被修改为 10
1
2
3
4
5

四、数组长度
每个数组都有一个Length属性,它表示数组中元素的数量。

int length = numbers.Length; // length 现在为 3
1

五、数组遍历
遍历数组是常见的操作,通常使用for循环或foreach循环来实现。

使用for循环遍历数组:

for (int i = 0; i < numbers.Length; i++)
{
    Console.WriteLine(numbers[i]);
}
1
2
3
4
使用foreach循环遍历数组:

foreach (int number in numbers)
{
    Console.WriteLine(number);
}
1
2
3
4

六、多维数组
除了上述的一维数组,C#还支持多维数组,其中最常见的是二维数组。二维数组通常用于表示表格数据或矩阵。

二维数组的声明与初始化:

int[,] matrix = new int[3, 3] { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
1
访问二维数组中的元素:

int element = matrix[1, 1]; // element 现在为 5
1
注意事项
数组的大小在创建后是固定的,不能更改。
如果尝试访问超出数组索引范围的元素,将会引发IndexOutOfRangeException异常。
数组在内存中是连续的,这意味着数组元素在内存中的地址是连续的,这有助于提高访问效率。

七、数组作为参数传递
在C#中,数组也可以作为参数传递给方法。这允许我们在方法内部操作数组,并可能改变其元素的值(如果方法内部允许这样做)。

void PrintArray(int[] array)
{
    foreach (int num in array)
    {
        Console.WriteLine(num);
    }
}

// 使用方法
int[] numbers = { 1, 2, 3, 4, 5 };
PrintArray(numbers); // 输出数组中的每个元素
1
2
3
4
5
6
7
8
9
10
11
注意,在上面的例子中,PrintArray方法接收一个int[]类型的参数,并遍历它打印每个元素。由于数组在C#中是引用类型,所以当我们传递数组给方法时,我们实际上传递的是对数组对象的引用,而不是数组本身的副本。


八、数组作为返回值
除了作为参数传递,数组也可以作为方法的返回值。这允许我们创建返回数组的方法,以便在需要时生成或处理数组数据。

int[] GenerateNumbers(int count)
{
    int[] numbers = new int[count];
    for (int i = 0; i < count; i++)
    {
        numbers[i] = i * 2; // 仅为示例,生成偶数序列
    }
    return numbers;
}

// 使用方法
int[] evenNumbers = GenerateNumbers(5); // 创建一个包含5个偶数的数组
1
2
3
4
5
6
7
8
9
10
11
12

九、数组的复制
在C#中,数组是引用类型,因此当你将一个数组赋值给另一个变量时,你实际上是在复制引用,而不是数组本身的内容。为了创建一个数组的新副本,你需要使用Array.Copy方法或数组的Clone方法。

int[] original = { 1, 2, 3, 4, 5 };
int[] copied = new int[original.Length];
Array.Copy(original, copied, original.Length); // 使用Array.Copy方法复制数组

// 或者使用Clone方法(但请注意,不是所有数组类型都支持Clone)
// int[] cloned = (int[])original.Clone();
1
2
3
4
5
6

十、数组与集合类
虽然数组在C#中非常有用,但在某些情况下,使用集合类(如List<T>)可能更为方便。集合类提供了更多的功能和灵活性,如动态调整大小、添加和删除元素等。然而,数组在内存布局和性能方面通常更有效率,特别是当需要处理大量连续数据时。


十一、数组的安全使用
由于数组的大小是固定的,并且索引是从0开始的,因此在使用数组时必须格外小心,以避免出现IndexOutOfRangeException异常。以下是一些建议:

在访问数组元素之前,始终检查索引是否有效(即,索引是否在0到Length - 1的范围内)。
使用foreach循环遍历数组时,无需担心索引问题,因为循环会自动处理。
如果可能的话,使用集合类(如List<T>)来替代数组,以获得更多的错误检查和异常处理功能。

总结
数组是C#中用于存储相同类型元素的固定大小集合。它们可以通过索引来访问和修改元素,并且支持多维数组。然而,在使用数组时必须小心,以避免出现索引越界等错误。在需要动态调整大小或更多功能的情况下,可以考虑使用集合类。


————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/molangmolang/article/details/140019690

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值