CSharp(C#)语言_第十章(数组 & foreach语句)

10.1 数组

ps:建议多使用一维数组和交错数组(性能更高)

  数组实际上是由一个变量名称表示的一组同类型的数据元素。每个元素通过变量名称和一个或多个方括号中的索引来访问

数组的访问方式:
  数组名 索引
  MyArray[index]

10.1.1 关于数组的重要定义

  • 元素 数组的独立数据项称作元素。数组的所有元素必须是相同类型的,或继承自相同类型
  • 秩/维度 数组可以有任何为正数的维度数。数组的维度称作
  • 维度长度 数组的每一个维度有一个长度,就是这个方向的位置个数
  • 数组长度 数组的所有维度中的元素的总和称作数组的长度
    在C#中数组一旦创建,大小就固定了(C#不支持动态数组)
    数组的索引从 0 开始

10.2 数组的类型

C#提供了两种类型的数组

  • 一维数组可以认为是单行元素或元素向量
  • 多维数组是由主向量中的位置组成,每一个位置本身又是一个数组,称为子数组。子数组向量中的位置本身又是一个子数组
  • 还有两种类型的多维数组:矩阵数组交错数组

矩阵数组交错数组的特征

矩阵数组
某个维度的所有子数组有相同长度的多维数组
不管有多少维度,总是使用一组方括号
ps:int x = myArray[4, 6, 1]

交错数组
每一个子数组都是独立数组的多维数组
可以有不同长度的子数组
为数组的每一个维度使用一对方括号
ps:Array[2][7][4]

10.3 数组是对象

  数组实例是从System.Array继承的对象。由于数组是从BCL基类继承,它们也继承了很多有用的方法

  • Rank 返回数组维度数的属性
  • Length 返回数组长度(数组中所有元素的个数)的属性

尽管数组总是引用类型,但是数组的元素可以是值类型也可以是引用类型

  • 如果存储的元素都是类值类型,数组被称作值类型数组
  • 如果存储在数组中的元素都是引用类型对象,数组被称为引用类型数组

10.4 一维数组

一维数组的声名
秩说明符:,  英文逗号
数据类型[ 秩说明符 ] 数组名;

一维数组声明并实例化的方式

数据类型 [] 数组名 = new 数据类型[ 数组长度 ];
数据类型 [] 数组名 = new 数据类型[]{ 数据1, 数据2, ....};
数据类型 [] 数组名 = { 数据1, 数据2, ....};
数据类型 [] 数组名 = new 数据类型[ 数组长度 ]{ 数据1, 数据2, ....};

10.5 矩阵数组

矩阵数组的声明
数据类型 [ , , ] 数组名; //三维数组
数据类型 [ , ] 数组名; //二维数组

矩形数组的声明应注意以下几点

  • 可以使用任意多的秩说明符
  • 不能在数组类型区域中放数组维度长度。秩是数组类型的一部分,而维度长度不是类型的一部分
  • 数组声明后,维度数就是固定的了。然而,维度长度直到数组实例化时才会确定

矩阵数组的实例化
ps:int [ , , ] arr = new int [3,6,2];
矩阵数组实例化和为数据初始化方式类似

10.6 交错数组

交错数组是数组的数组。与矩阵数组不同,交错数组的子数组的元素个数可以不同

	// arr是3个int数组的数组(读法)
	int [][]  arr = new int [3][];	//声明并创建顶层数组
		...							//声明并创建子数组

声明方式
交错数组的声明语法要求每一个维度都有一对独立的方括号。数组变量声明中的方括号数决定了数组的

  • 交错数组可能的维度可以是大于1的任意整数
  • 和矩形数组一样,维度长度不能包括在数组类型的声明部分

int[][] SomeArr; //秩等于2
int[][][] OtherArr; /秩等于3

实例化交错数组

int [][] Arr = new int[3][];	//实例化顶层数组

Arr[0] = new int []{1, 2, 3};				//实例化子数组
Arr[1] = new int []{12, 22, 32, 42};		//实例化子数组
Arr[2] = new int []{10, 20, 30, 40, 50};	//实例化子数组

10.7 数组继承的有用成员(部分)

成员 类型 生存期 意义
Rank 属性 实例 获取数组的维度数
Length 属性 实例 获取数组中所有维度的元素总和
GetLength 方法 实例 返回数组的指定维度的长度
Clear 方法 静态 将某一范围内的元素设置为0或nu1l
Sort 方法 静态 在一维数组中对元素进行排序
BinarySearch 方法 静态 使用二进制搜索,搜索一维数组中的值
Clone 方法 实例 进行数组的浅复制——对于值类型数组和引用类型数组,都只复制元素
Indexof 方法 静态 返回一维数组中遇到的第一个值
Reverse 方法 静态 反转一维数组中的某一范围内的元素
GetUpperBound 方法 实例 获取指定维度的上限

10.8 foreach语句

foreach语法:
froeach( Type Indentifiter in ArrayNmae) { Satement }

  • 迭代变量是临时的,并且和数组中元素的类型相同。foreach语句使用迭代变量来相继表示数组中的每一个元素
  • Type 是数组中元素的类型,可以显示提供,也可以使用 var 隐式的通过编译器来推断
  • Indentifiter 迭代变量的名字
  • ArrayName 要处理数组的名字
  • Satement 语句或语句块
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章