C# 高级编程 第5章 数组 总结

数组是引用类型,所以在初始化的时候就会给他们分配堆上内存。

声明多维数组  例 三维数组 : i

  nt[,,]  num={{{1,1},{4,3}},{{2,3},{3,4}}}; (数组必须对称)

声明锯齿数组 例 二维数组:

  int[][] num =new int [2][];

  num[0]=new int[2]{1,2};

  num[1]=new int[5]{1,2,3,4,5};

用括号声明数组是C#中使用Array类的记号。会生成一个派生于抽象类Array的一个新类,array类实现了IEumerable、ICollection,IList 接口,以访问和枚举数组中的元素。由于用定制数组创建的类派生于Array抽象类,所以能通过数组变量执行接口中得方法或属性。

C#中得foreach语句不会解析IL代码中的foreach语句。C#编译器会把foreach语句IEnumerable接口的方法和属性。首先调用GetEnumerator()方法,获得数组的一个枚举。在while循环中只要MoveText()返回true,用Current属性访问数组中得元素。

例:foreach(person p in persons)

  {

    Console.Writeline(p);

  }

解析为:

  IEnumerator enumerator=persons.GetEnumerator();

  while(enumerator.MoveNext())

  {

    person p=(person) enumerarot.Current;

    Console.Writline(p);

  }

 其实 就是 GetEnumerator()实现了IEnumerable中得 GetEnumerator(), 它返回一个实现IEnumerator 接口的对象。

IEnumerator 接口的方法和属性:

  MoveNext() 方法   移动到集合的下一个元素,如果有这个元素就返回true,否则返回false。

  Current   属性  返回光标所在的元素

  Reset() 方法 将光标重新定位于集合的开头。许多枚举会抛出NotSupportedException异常

posted on 2011-07-28 16:25  人渐人爱  阅读(158)  评论(0)    收藏  举报

导航