在C#中,数组是一种用于存储多个相同类型元素的数据结构。它提供了一种有序、索引的方式来访问和操作元素。
数组是在内存中连续分配的一段存储空间,可以有效地存储和访问大量相同类型的数据。
一维数组
1.声明数组:要声明一个数组,需要指定元素的类型和数组的名称,并使用方括号 [] 指定数组的大小。例如:
int[] numbers; // 声明一个整数数组
string[] names; // 声明一个字符串数组
2.创建数组:创建数组时,需要使用关键字 new
后跟数组类型和大小。例如:
numbers = new int[5]; // 创建一个包含 5 个整数的数组
names = new string[3]; // 创建一个包含 3 个字符串的数组
3.访问数组元素:通过索引来访问数组中的元素。索引从 0 开始,依次递增。例如:
numbers[0] = 10; // 设置第一个元素的值为 10
int x = numbers[1]; // 获取第二个元素的值
4.数组长度:可以使用 Length
属性获取数组的长度,即数组中元素的个数。例如:
int count = numbers.Length; // 获取数组的长度
5.遍历数组:可以使用循环结构(如 for
循环或 foreach
循环)遍历数组中的所有元素。例如:
for (int i = 0; i < numbers.Length; i++)
{
Console.WriteLine(numbers[i]);
}
foreach (string name in names)
{
Console.WriteLine(name);
}
多维数组
1.声明多维数组:要声明一个多维数组,需要指定每个维度的大小,并使用方括号 []
指定数组的名称。例如:
int[,] matrix; // 二维数组
string[,,] cube; // 三维数组
2.创建多维数组:创建多维数组时,需要使用关键字 new
后跟数组类型和各个维度的大小。例如:
matrix = new int[2,2]{{1,1},{2,2}} // 创建一个 2 行 2 列的二维数组
cube = new string[2,,2,,2]{{{1,1},{1,1}},{{2,2},{2,2}},{{1,1},{1,1},{2,2},{2,2}};
// 创建一个 2 × 2 × 2 的三维数组
3.访问多维数组元素:通过使用逗号分隔的索引来访问多维数组中的元素。索引从 0 开始,每个维度都有自己的索引范围。例如:
matrix[0, 0] = 10; // 设置第一个元素的值为 10
int x = matrix[1, 2]; // 获取第二行第三列的元素值
4.多维数组的长度:可以使用 GetLength()
方法来获取每个维度的长度。例如:
int rows = matrix.GetLength(0); // 获取二维数组的行数
int columns = matrix.GetLength(1); // 获取二维数组的列数
5.遍历多维数组:可以使用嵌套的循环结构(如嵌套的 for
循环)来遍历多维数组中的所有元素。例如:
for (int i = 0; i < matrix.GetLength(0); i++)
{
for (int j = 0; j < matrix.GetLength(1); j++)
{
Console.WriteLine(matrix[i, j]);
}
}
动态数组
-
动态大小:
ArrayList
可以根据需要动态调整大小,不需要预先指定容量。 -
存储不同类型的对象:
ArrayList
可以存储任意类型的对象,包括值类型和引用类型。 -
自动装箱和拆箱:当将值类型存储在
ArrayList
中时,会自动进行装箱(将值类型包装为引用类型)和拆箱(将引用类型拆箱为值类型)。 -
索引访问:可以使用索引来访问和修改
ArrayList
中的元素,类似于数组。 -
动态添加和删除元素:
ArrayList
提供了添加和删除元素的方法,如Add()
、Remove()
、Insert()
等。 -
遍历元素:可以使用
foreach
循环或通过索引循环遍历ArrayList
中的元素。
然而,随着 .NET Framework 的发展,推荐使用泛型集合类型(如 List<T>
)代替 ArrayList
。泛型集合提供了类型安全性和更好的性能,而 ArrayList
存在装箱和拆箱操作,可能导致性能下降。因此,在新的代码中,建议使用泛型集合类型来替代 ArrayList
。
using System;
using System.Collections;
class Program
{
static void Main()
{
ArrayList list = new ArrayList();
// 添加元素
list.Add("Apple");
list.Add(10);
list.Add(DateTime.Now);
// 遍历元素
foreach (var item in list)
{
Console.WriteLine(item);
}
// 修改元素
list[1] = 20;
// 删除元素
list.Remove("Apple");
// 根据索引访问元素
Console.WriteLine(list[0]);
Console.ReadKey();
}
}