位置: 文档库 > C#(.NET) > 文档下载预览

《C#数组学习.doc》

1. 下载的文档为doc格式,下载后可用word或者wps进行编辑;

2. 将本文以doc文档格式下载到电脑,方便收藏和打印;

3. 下载后的文档,内容与下面显示的完全一致,下载之前请确认下面内容是否您想要的,是否完整.

点击下载文档

C#数组学习.doc

《C#数组学习》

一、引言

在C#编程中,数组是一种基础且重要的数据结构,它允许开发者以连续的内存空间存储相同类型的多个元素。无论是处理简单的数据集合,还是构建复杂的算法逻辑,数组都扮演着不可或缺的角色。本文将系统介绍C#数组的定义、声明、初始化、操作方法以及高级应用场景,帮助读者全面掌握数组的使用技巧。

二、数组基础

1. 数组的定义与声明

数组是引用类型,其声明需要指定元素类型和维度。C#支持一维数组、多维数组(矩形数组)和交错数组(锯齿数组)。

(1)一维数组声明

// 声明一个包含5个整数的数组
int[] numbers = new int[5]; 
// 声明并初始化
string[] names = new string[] { "Alice", "Bob", "Charlie" }; 
// 简写形式(编译器可推断长度)
double[] values = { 1.1, 2.2, 3.3 };

(2)多维数组声明

// 二维数组(3行4列)
int[,] matrix = new int[3, 4]; 
// 三维数组
float[,,] cube = new float[2, 3, 4];

(3)交错数组声明

// 交错数组(每个子数组长度可不同)
int[][] jaggedArray = new int[3][];
jaggedArray[0] = new int[2] { 1, 2 };
jaggedArray[1] = new int[3] { 3, 4, 5 };

2. 数组初始化

数组初始化分为显式初始化和隐式初始化:

// 显式初始化(指定索引赋值)
int[] explicitInit = new int[5];
explicitInit[0] = 10;
explicitInit[1] = 20;

// 隐式初始化(使用初始化器)
int[] implicitInit = { 100, 200, 300 };

对于多维数组,初始化方式类似:

int[,] multiInit = { 
    { 1, 2, 3 }, 
    { 4, 5, 6 } 
};

三、数组操作

1. 访问元素

通过索引访问数组元素(索引从0开始):

int[] arr = { 10, 20, 30 };
Console.WriteLine(arr[1]); // 输出20

对于多维数组,使用逗号分隔的索引:

int[,] matrix = { { 1, 2 }, { 3, 4 } };
Console.WriteLine(matrix[1, 0]); // 输出3

2. 遍历数组

(1)使用for循环

int[] numbers = { 1, 2, 3, 4, 5 };
for (int i = 0; i 

(2)使用foreach循环

foreach (int num in numbers) {
    Console.WriteLine(num);
}

(3)多维数组遍历

int[,] matrix = { { 1, 2 }, { 3, 4 } };
for (int i = 0; i 

3. 数组属性与方法

(1)Length属性:获取数组总元素数

int[] arr = new int[10];
Console.WriteLine(arr.Length); // 输出10

(2)Rank属性:获取数组维度

int[,] multiArr = new int[2, 3];
Console.WriteLine(multiArr.Rank); // 输出2

(3)GetLength方法:获取指定维度的长度

int[,,] cube = new int[2, 3, 4];
Console.WriteLine(cube.GetLength(1)); // 输出3

(4)Copy方法:复制数组

int[] source = { 1, 2, 3 };
int[] destination = new int[3];
Array.Copy(source, destination, source.Length);
// 或使用Clone方法
int[] cloned = (int[])source.Clone();

(5)Sort方法:排序数组

int[] unsorted = { 5, 2, 8, 1 };
Array.Sort(unsorted);
// 自定义排序(使用IComparer)
string[] names = { "John", "Alice", "Bob" };
Array.Sort(names, StringComparer.OrdinalIgnoreCase);

(6)Reverse方法:反转数组

int[] arr = { 1, 2, 3 };
Array.Reverse(arr); // 变为{3,2,1}

四、数组与集合的关系

1. 数组与List的转换

(1)数组转List

int[] arr = { 1, 2, 3 };
List list = new List(arr);

(2)List转数组

List names = new List { "A", "B" };
string[] namesArr = names.ToArray();

2. 性能比较

数组在访问速度上优于List,因为List内部使用数组实现且存在扩容开销。但List提供了动态扩容、插入删除等便捷操作。

五、数组高级应用

1. 参数传递(引用类型特性)

void ModifyArray(int[] arr) {
    arr[0] = 100;
}

int[] original = { 1, 2, 3 };
ModifyArray(original);
Console.WriteLine(original[0]); // 输出100

2. 作为方法返回值

int[] GenerateNumbers(int count) {
    int[] result = new int[count];
    for (int i = 0; i 

3. 多维数组的实际应用

(1)矩阵运算

int[,] AddMatrices(int[,] a, int[,] b) {
    int rows = a.GetLength(0);
    int cols = a.GetLength(1);
    int[,] result = new int[rows, cols];
    for (int i = 0; i 

(2)图像处理(像素数组)

byte[,,] imageData = new byte[height, width, 3]; // RGB通道

4. 交错数组的典型场景

处理不规则数据结构,如学生各科成绩:

int[][] studentGrades = new int[3][];
studentGrades[0] = new int[] { 90, 85 }; // 学生1的两科成绩
studentGrades[1] = new int[] { 78, 92, 88 }; // 学生2的三科成绩

六、常见问题与解决方案

1. 数组越界异常

try {
    int[] arr = { 1, 2 };
    Console.WriteLine(arr[2]); // 抛出IndexOutOfRangeException
} catch (IndexOutOfRangeException ex) {
    Console.WriteLine("索引超出范围:" + ex.Message);
}

2. 数组与字符串的转换

(1)字符串转数组

string input = "1,2,3";
string[] stringArr = input.Split(',');
int[] intArr = Array.ConvertAll(stringArr, int.Parse);

(2)数组转字符串

int[] numbers = { 1, 2, 3 };
string joined = string.Join(",", numbers);

3. 动态数组需求

当需要动态增减元素时,优先使用List

List dynamicList = new List();
dynamicList.Add(10);
dynamicList.RemoveAt(0);

七、最佳实践

1. 明确数组用途:固定大小数据用数组,动态数据用集合

2. 初始化时指定容量:避免频繁扩容

// 错误示例(多次扩容)
List badList = new List();
for (int i = 0; i  goodList = new List(10000);
for (int i = 0; i 

3. 使用foreach替代for(仅需遍历时)

4. 多维数组考虑使用Jagged Array优化性能(当各维度长度不均时)

八、总结

C#数组作为基础数据结构,具有高效的访问性能和丰富的操作方法。通过掌握一维/多维/交错数组的声明与初始化,熟练运用数组属性与方法,开发者可以高效处理各种数据集合场景。在实际开发中,需根据业务需求选择数组或集合类型,并注意边界检查、性能优化等关键点。

关键词:C#数组、一维数组、多维数组、交错数组、数组初始化、数组操作、Array类方法、数组与集合、性能优化

简介:本文全面介绍C#数组的核心概念与使用技巧,涵盖数组声明、初始化、遍历、常用方法及高级应用场景,对比数组与集合的差异,提供实际开发中的最佳实践和问题解决方案。

《C#数组学习.doc》
将本文以doc文档格式下载到电脑,方便收藏和打印
推荐度:
点击下载文档