C# 数组

C#数组详解
本文深入讲解C#中的数组概念,包括一维数组、多维数组和交错数组的声明、实例化及使用方法,并介绍了数组的基本操作如排序、查找等。

C#是一种区分大小写的语言,大小不正确会使代码无法成功编译。


数组

存储一种类型的多个数据项,可以利用索引来单独的访问这些数据项,C#的数组索引是从零开始的,所以我们也说C#中的数组是基于零的。数组,相同类型的多个数据项的一个集合。数组中的每个数据项都使用名为索引(index)的一个整数值进行唯一性标识。(偏移量:专业术语,比如 第一个距离数组开头的偏移量为0.)。



数组的声明:

string [ ] languages ;

string 标识了数组中存储的元素的类型;  [ ] 方括号指定了数组的秩(rank)或者说维数;  languages 数组名称;


数组的实例化和赋值;

string [ ] languages={ "C#" , "C++" ,"COBOL" ,"Java" } ;


如果在声明之后在进行赋值,需要使用 new 关键字和对应的数据类型;

 string [ ]  languages;

languages=new string [ ] { "C#" , "C++" , "Java" } ;

使用new 关键字 会让运行时为数据类型分配内存,它指示“运行时”实例化数据类型——本例是一个数组。


string [ ] languages =new languages [ 9 ]  {   ..............  }

数组大小和括号中包含的元素数量必须匹配。


初始值

引用类型(比如string)初始值为 null ;

数值类型初始值为零;

bool 初始值为 false;

char 初始值为 ' \n ' 。

非基本值类型以递归的方式初始化,他们的每一个字段都是被初始化为默认值;


在C#2.0中,可以使用default()运算符来判断一种数据类型的默认值,default()获取一个数据类型作为参数,例如:

default  (int) 会返回 0;

default (char) 会返回 \0 ;


string [ ] nnn;

System.Cosole.Write("who many items on the list ?") ;

int size = int.Parse(System.Cosole.ReadLine().);

nnn=new string [size];


二维数组 、三维数组、多维数组;

例如:二维数组

int [ , ] cells = int  [3,3] ;     int [  , ] cells= { {1,0,1} , {1,1,1}, {2,3,1}  };


初始化,每个int [ ] 元素的维数必须是完全一致的,下面代码无效错位

int [ , ] cells = {{1,0,2} , {1,} , {1,22,2,33333} };


bool [ , ,] cells;

cells=new bool [2,3,3]{ .................. };  

bool [ , , ] 类型的字面值划分为两个bool[  , ]类型的数组,每个数的大小都是3 * 3;


交错数组

int [ ] [ ] cells ={

        new int [ ] { 1,21,2} ,

        new int [ ] { 0, 7},

        new int [ ] { 1 }

};

交错数组不使用逗号来表标识一个新的维,相反,交错数组定义一个数组构成的数组;


数组的使用


将一个数组的值存储到另个变量中:

string [ ] languages =new string [ 5 ]{

"C#" , " C++ ", "Java"

} ;

string language =languages [2] ;

将languages 中的第三项 Java存储到变量language 中;


将数组中的元素进行替换:

string [ ] languages =new string [ 5 ]{

"C#" , " C++ ", "Java"

} ;

string language =languages [2] ;

languages [3] =language ;


数组的长度是固定的,长度不能随便更改,除非重新创建数组,除此之外,越过数组的边界(或长度)会造成“运行时“报错。

使用数组长度作为索引来访问数组,会出错。例如:

string [ ] languages =new string[5];

.

.

.

languages [4] =languages [ 9] ;  

将会出错。最高索引为8  ,而不是9 ;

 

操作数组中的元素 包括:Sort( )、BinarySearch() 、Reverse()和Clear()等;

使用BinarySearch()方法之前,有必要对数组进行排序,如果数值不按照升序进行排序,会返回不正确的索引,如果搜索的元素不存在,那么返回的是负值。使用取反运算符~index 会返回大于搜索值得第一个索引(如果有的话)。

clear()方法不删除数组元素,而且不将长度设置为零,数组的大小是固定的,不能修改,所以clear() 方法将数组中得每个元素都设为其默认值(false、null 或 0);

GetLength() 获取一个特定维的长度。

Rank 这是维上得元素个数:

bool [ , , ] cells;

cells=new bool [ 2,3,6];

System.Cosole.WriteLine(cells.Rank);  

结果为3;

clone() 复制;





C# 中,数组是一种用于存储固定大小的同类型数据集合的数据结构。使用数组可以高效地处理多个相同类型的数据项。以下是 C# 数组的常见操作和使用方法: ### 声明和初始化数组C# 中,可以通过多种方式声明和初始化数组: - **一维数组**:`int[] numbers = new int[5];` 创建一个包含 5 个整数的一维数组。 - **直接初始化**:`int[] numbers = {1, 2, 3, 4, 5};` 在声明时初始化数组元素。 ### 访问数组元素 数组中的每个元素都可以通过索引访问,索引从 `0` 开始。例如: ```csharp int[] numbers = {1, 2, 3, 4, 5}; Console.WriteLine(numbers[0]); // 输出第一个元素 1 ``` ### 修改数组元素 可以直接通过索引修改数组中的元素值: ```csharp numbers[0] = 10; // 将第一个元素修改为 10 ``` ### 遍历数组 可以使用 `for` 或 `foreach` 循环遍历数组的所有元素: ```csharp foreach (int num in numbers) { Console.WriteLine(num); // 输出每个元素 } ``` ### 传递数组作为参数 数组可以作为参数传递给方法,以便在方法内部操作数组内容: ```csharp void PrintArray(int[] array) { foreach (int num in array) { Console.WriteLine(num); } } // 调用方法 int[] numbers = {1, 2, 3, 4, 5}; PrintArray(numbers); // 输出数组中的每个元素 [^1] ``` ### 使用 `params` 关键字 C# 提供了 `params` 关键字,允许将可变数量的参数作为数组传递给方法: ```csharp private static int Add(params int[] arr) { int sum = 0; foreach(var item in arr) { sum += item; } return sum; } // 调用方法 Add(1, 2, 3); // 返回 6 Add(new int[] {1, 2, 3}); // 返回 6 ``` 这简化了调用者代码,并允许传递一组相同类型的数据或完全不传递参数 [^2]。 ### 动态创建数组 可以使用 `new` 关键字动态创建数组,指定数组的大小: ```csharp int[] numbers = new int[5]; // 创建一个包含 5 个整数的数组 [^3] ``` ### 多维数组 C# 支持多维数组,包括矩形数组(规则的二维或多维数组)和交错数组数组数组): - **矩形数组**:`int[,] matrix = new int[3, 3];` 表示一个 3x3 的二维数组。 - **交错数组**:`int[][] jaggedArray = new int[][] { new int[] {1, 2}, new int[] {3, 4, 5} };` 表示一个数组数组。 ### 数组排序 C# 提供了内置的排序功能,可以使用 `Array.Sort()` 方法对数组进行排序: ```csharp int[] numbers = {5, 3, 8, 1}; Array.Sort(numbers); // 排序后变为 {1, 3, 5, 8} ``` ### 查找数组元素 可以使用 `Array.IndexOf()` 方法查找特定元素的索引: ```csharp int index = Array.IndexOf(numbers, 3); // 查找数字 3 的位置 ``` ### 复制数组 可以使用 `Array.Copy()` 方法复制数组的一部分到另一个数组中: ```csharp int[] source = {1, 2, 3, 4, 5}; int[] destination = new int[5]; Array.Copy(source, destination, source.Length); // 复制整个数组 ``` ### 数组长度 可以通过 `Length` 属性获取数组的长度: ```csharp int length = numbers.Length; // 获取数组的长度 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值