ASP.NET4.0 了解数组
数组是在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来的一种形式。这些按序排列的同类数据元素的集合称为数组。
在C#语言中与C、C++、Java等一些编程语言相同,数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、结构数组等各种类别。
数组有一个“秩”。数组的秩又称为数组的维度。“秩”为 1 的数组称为一维数组。“秩”大于 1 的数组称为多维数组。维度大小确定的多维数组通常称为两维数组、三维数组等。
数组的每个维度都有一个关联的长度,它是一个大于或等于零的整数。维度的长度不是数组类型的组成部分,而只与数组类型的实例相关联,它是在运行时创建实例时确定的。维度的长度确定了该维度的索引的有效范围,如对于长度为N的维度,索引的范围可以为0到N–1(包括0和N–1)。数组中的元素总数是数组中各维度长度的乘积。如果数组的一个或多个维度的长度为零,则称该数组为空。
1.声明数组
声明数组时,方括号([ ])必须跟在类型后面,而不是标识符后面。在C#中,将方括号放在标识符后是不合法的语法。在C#语言中支持一维数组、多维数组(矩形数组)和数组的数组(交错的数组)。
例如,定义数组,就是在内存中划分一组内存单元,按照索引的顺序为这些内存单元编号,为存储数据预留位置,其方法如下所示。
Modifier Type[] ArrayName
在上面的代码中,Modifier关键字表示数组的修饰符,Type关键字表示数组中元素的数据类型,ArrayName表示数组的名称。
数组的修饰符使用方法与变量的修饰符相同,其元素的数据类型可以是值类型,也可以是引用类型或更复杂的其他结构。数组的命名规范与变量也完全相同。例如,定义一个由若干字符串组成的数组,其代码如下。
public string[] strArray;
在一些弱类型的编程语言或脚本语言中,往往允许在同一数组中存储多种类型的数据,例如JavaScript、ActionScript等。而在C#中,一个数组只能存储一种数据类型的数据。 | |
2.初始化数组
数组类型从.NET Framework中的System.Array继承而来,创建一个数组,本身相当于建立一个基于Array类的对象,而为一个数组赋值,则相当于初始化这一对象。
Modifier Type[] ArrayName = new Type[Length];
在上面的代码中,使用了new关键字来对数组进行实例化,同时使用了Length关键字标识数组的长度。例如,定义一个包含5个整数元素的数组,代码如下。
public int[] intArray = new int[5];
除了直接定义数组元素数量外,开发者也可以在创建数组时直接为其赋值,在赋值的同时,事实上也就相当于定义了数组的元素数量,方法如下所示。
Modifier Type[] = {Element1 , Element2 , …… , ElementN}
在上面的代码中,就是用了大括号“{}”将所有的数组元素括住,通过数组元素间接地定义数组中包含的元素数。例如,在下面的代码中,就定义了一个包含3个字符型变量的数组,代码如下。
private char[] = {'a' , 'b' , 'c'};
另外,也可以先声明数组,再通过另外的语句定义数组元素的数量或赋值,其方法与定义变量后再为变量赋值类似。
在定义数组的元素数量时,C#会自动为每一个数组元素赋予一个默认的值。例如,当数组元素为数字时,其值往往是0,而数组元素为字符或字符串时,则会是空的字符或字符串等。 | |
3.锯齿状数组
C#允许定义锯齿状数组,其中每一行的列数不同。其作用就是节约内存,有些行或许不需
要那么多列。与二维数组一样,这类锯齿状数组也是二维的,但是其中每一行拥有的元素个数不同(从抽象的数组来看,非常像一个锯齿状)。
定义锯齿状数组时,使用两套空的方括号,后面紧跟数组的类型名称。当调用new运算符时,可以指定第一维的大小,但是不指定第二维的大小。定义了第一个数组以后,再次调用new运算符定义其它的数组:
byte[][] array = new byte[8][];
array[0] = new byte[3];
array[1] = new byte[5];
.
.
.
array [7] = ne byte[2];
说的直白点,创建锯齿状数组,就像在数组中再次创建数组。而对锯齿数组进行操作时,同操作二维数组一样。
4writeline输出数值变量.操作数组
在应用数组过程,用户需要对数组进行频繁的操作,如查数组元素、遍历数组、替换数组内容、数组排序等等。例如,获取整数型变量的数组元素数量,可以使用GetLength()方法或Length属性,其使用方法如下。
ArrayName.GetLength();
ArrayName.Length;
在上述代码中,ArrayName表示数组名称,而通过GetLength()方法和Length属性,来获取数组的元素数量。
GetLength()等方法与Length等属性不仅可以获取简单的一维数组数组元素长度,也可以获取多维数组中的每一维,以及锯齿数组中每一个元素数组的元素数量。
例如,在获取多维数组的元素数时,Length属性和LongLength属性获取的并非每个维度的数组元素,仅能获取数组中所有的元素数量。例如,在下面的多维数组中,获取的就是数组所有的元素数,代码如下。
string[,] strArray = new string[3,2];
strArray[0,0] = "计算机编程";
strArray[0,1] = "网站开发";
strArray[1,0] = "照片处理";
strArray[1,1] = "网站美工";
strArray[2,0] = "建筑制图";
strArray[2,1] = "机械设计";
Console.WriteLine(strArray.Length);//输出6
如果需要获取多维数组中每一个维度中的元素数量,则可以使用为GetLength()方法或GetLongLength()方法添加参数的方式进行获取。例如,获取上述多维数组第一维的元素数量,可以为GetLength()方法添加数字0的参数,代码如下。
Console.WriteLine(strArray.GetLength(0));//输出3
由于锯齿数组中的每个元素数组长度可以各不相同,因此在使用锯齿数组时,不能通过GetLength()方法的参数获取其元素数组的长度。这也是多维数组与锯齿数组的根本区别所在。 | |
如果需要查数组中的信息,则需要对数组进行遍历操作。而在遍历数组时,用户可以使用for循环语句或者使用foreach循环语句。
例如,使用for语句来输出显示,Test数组中包含的文本内容,代码如下。
static void Main(string[] args)
{
string[] test = { "计算机图书", "小说", "语文","数学" };
for (int i = 0; i < test.Length; i++) {
Console.WriteLine(test[i]);
}
}
在输出数组中所有变量的值时,应注意C#与JavaScript、ActionScript等脚本不同,无法直接通过输出数组名的方式输出数组内的元素,必须通过遍历的方法实现输出,如图2-3所示。
图2-3 输入数组内容
在对二维数组或锯齿数组进行遍历时,需要分别为数组的各维度或级数进行遍历操作。此时,需要使用for循环语句的嵌套功能,才能完成。例如,使用for嵌套方式遍历二维数组,代码如下。
static void Main(string[] args)
{
int count=0;
int[,] test=new int[5,8];
for(int i=0;i<test.GetLength(0);i++)
{
for(int j=0;j<=test.GetLength(1);j++)
{
Console.Write(j);
}
Console.WriteLine();
}
}
在上面的代码中,分别通过多维数组的GetLength()方法获取其每一维度的数组元素数量,因此可以通过嵌套迭代语句的方式进行输出值,如图2-4所示。
图2-4 嵌套输出内容
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论