数组(Array)

当程序运行时很难预料会创建多少个对象,用定长数组存储数量不定的对象,效率太低。System.Collections命名空间定义了多种可选群集类,用来存储对象。注意,System.Array类不是System.Collections命名空间的一部分;不过,所有的C#群集类——System.Array和各种System.Collections类——都实现了ICollection接口,该接口在System.Collection命名空间中定义,所以,所有的群集类都共享一系列公共行为。

 

数组

System.Array类定义了一系列有用的方法和属性来搜索、排序和修改数组,以下面的代码演示如何用Length来求的一维数组的长度:

int[] x= new int[20];

//数组具体初始化过程已经从略.....

//遍历数组。

//在i等于x.length之前结束!!!

for(int i=0;i<x.length;i++)

{

    Console.WriteLine(x[i]);

}

数组从零开始计数,因此,在for循环中,必须在达到长度上线之前停止。

注意,数组的长度不反映数组中有多少个元素被赋了值,从技术上说,即便没有明确地在数组中存储任何东西,每个元素都会自动填充该数组类型中等价于零的值。因此,数组的长度仅仅表明了整个数组的容量;它的容量在一开始声明后就被固定了,以后也再不能更改(要该就要修改声明时的大小)。

数组的方法

Array类定义了很多有用的静态方法和实体方法,可以用来检查或操作数组;接下来我们将讨论几个常用的方法。关于Array类方法的完整描述请参阅MSDN.

前三个方法是静态的,意味着它们必须从作为一个整体的Array类上调用:

1、public static void Clear(Array array,int startIndex,int length):

将数组指定范围内的元素重设为与零等价的值。参数包括要清零的数组的名称,开始位置(从0开始计数)和需要清零的元素数目;

int[] x = new int[5];

//清空整个数组。

Array.Clear(x,0,x.length);

 

2、public static void Reverse(Array array):  调转一个一维数组中的所有元素的次序;

int[] x = {1,2,3}; 

Array.Reverse(x); //现在x中的元素包括:{3,2,1}.

该方法还有一个覆盖版本,能调转从起始位置开始的规定长度的元素次序:

public static void Reverse(Array array,int startIndex,int length)

 

3、public static void Sort(Array array):对一维数组中的元素进行排序。对字符串默认的排序规则是按字母表次序,对数字则按从小到大排序。

string[] names = {"Vijay","Tiger","Phil"};

Array.Sort(names); //元素的次序变成了"Phil","Tiger","Vijay".

该方法有一个覆载版本,能对从起始位置开始规定长度内的元素进行排序:

public static void Sort(Array array,int indexStart,int length)

 

接下来的三个方法是实体方法,意味着它们能经由不同的数组实体直接被调用:
1、public object GetValue(int index) :以一般对象的形式返回一维数组中指定位置的元素。如果我们确知返回对象的类型,就能转换它:

String[] names = {"Chirs","Sandi","Brennan"};

//将返回对象转换为字符串。

string name = (string)names.GetValue(0);

或:

int[] numbers = {11,44,54};

//将返回对象转换为整数。

string number = (int)numbers.GetValue(0);

 该方法也有重载版本,能够返回二维或者三维数组中的元素:

public object GetValue(int index1,int index2)

public object GetValue(int index1,int index2,int index3)

2、public void SetValue(object value,int index):修改一维数组中指定位置上的元素。

该方法还有修改二维或三维数组中指定元素值的重载版本:

public void SetValue(object value,int index1,int index2)

public void SetValue(object value,int index1,int index2,int index3)

虽然GetValue和SetValue是Array类提供的方法,但索引器的概念容易和便于使用。

语法:

string name = names[0];

比下面等同的语法更容易编写和理解

string name = (string)names.GetValue(0);

3、public int GetLength(int dimension):返回任意维数组中指定维度的长度。

例如,要得到一个二维数组中第一维的长度,用GetLength(0)。(对于一维数组,只需要Length属性来判断数组的长度)

 

GetUpperBound可以获取数组的最高下标。

GetLowerBound可以获取数组的最低下标。

这样就可以实现对数组的遍历

//定义二维数组

string[,] arrData = new string[,]{{"1","2"},{"22","22"},{"33","33"}};

for(int i=arrData.GetLowerBound(0);i<=arrData.GetUpperBound(0);i++)

{

     for(int i=arrData.GetLowerBound(1);i<=arrData.GetUpperBound(1);i++)

      {

           //处理每一个元素}}0表示二维数组的第一维,1表示数组的第二维

      }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值