IEnumerator对象有什么呢?

来源:互联网 发布:淘宝买到假瑞士军刀包 编辑:程序博客网 时间:2024/04/29 19:20

  (1)集合的命名空间

  大多数集合类都可以在System.Collections和System.Collections.Generic名称空间中找到。泛型集合位于System.Collections.Generic名称空间中;专用于特定类型的集合类位于System.Collections.Specialized名称空间中;线程安全的集合位于System.Collections.Concurrent名称空间中。

  (2)集合接口介绍

  1、IEnumerable与IEnumerator接口

  其实IEnumerable接口是非常的简单,只包含一个抽象的方法GetEnumerator(),它返回一个可用于循环访问集合的IEnumerator对象。

  public interface IEnumerable

  {

  IEnumerator GetEnumerator();

  }

  IEnumerator对象有什么呢?它是一个真正的集合访问器,没有它,就不能使用foreach语句遍历集合或数组,因为只有IEnumerator对象才能访问集合中的项。IEnumerator接口定义了:一个Current属性用来获取当前集合中的项;MoveNext方法将游标的内部位置向前移动;Reset方法将枚举数设置为其初始位置,该位置位于集合中第一个元素之前。

  public interface IEnumerator

  {

  object Current { get; }

  bool MoveNext();

  void Reset();

  }

  一个collection要支持foreach进行遍历,就必须实现IEnumerable,并以某种方式返回迭代器对象:IEnumerator.

  2、集合和列表实现的接口表

  接口

  说明

  IEnumerable

  如果foreach语句用于集合,就需要此接口。

  ICollection

  此集合定义了Count属性、CopyTo、Add、Remove、Clear方法

  IList

  可以通过位置访问几何元素

  ISet

  此集合不允许有重复的元素

  IDictionary

  含有键值对的集合

  ILookup

  含有键值对的集合,但可以通过一个键包含多个值

  IComparer

  集合元素比较器,用于集合元素的排序

  IEqualityComparer

  用于字典集合的比较器

  IProducerConsumerCollection

  线程安全的集合

  2.集合的基本操作

  (1)创建集合

  使用默认的构造函数创建一个空集合,元素添加到集合之后,集合的容量就会扩大为4.当集合的容量被使用完,且还在向集合中添加元素时,集合的容量就会扩大成原来的2倍!可使用Capacity属性设置或访问集合的容量,使用Count属性访问集合的元素个数。也可使用TrimExcess方法调整集合容量,节省内存!

  class Program

  {

  static void Main(string[] args)

  {

  List list = new List();//List list = new List(3)

  for (int i = 0; i < 1025; i++)

  {

  if (list.Count == (list.Capacity))

  {

  Console.WriteLine("容量使用量:"+list.Count + "/" + list.Capacity);

  }

  list.Add(i);

  }

  Console.WriteLine("容量使用量:" + list.Count + "/" + list.Capacity);

  list.TrimExcess();//调整容量

  Console.WriteLine("容量使用量:" + list.Count + "/" + list.Capacity);

  Console.Read();

  }

  }

  创建集合时可以为集合设置初始值,如下:

  List list = new List() { 1,2,3,4,5,6,7,8,9,0};

  List list = new List() { "aa", "bb", "cc" };

  (2)添加元素

  为集合添加元素可使用Add方法,还可以使用AddRange方法一次添加多个元素,因为AddRange方法的参数是IEnumerable类型的对象,所以可以添加数组到集合里。

  class Program

  {

  static void Main(string[] args)

  {

  List list = new List();

  list.AddRange(new string[]{"aa","bb","cc"});//添加数组

  list.AddRange(list);//添加集合

  foreach (string s in list)

  {

  Console.WriteLine(s);

  }

  Console.Read();

  }

  }

  (3)插入元素

  插入元素可以使用Insert方法,同样使用InsertRange方法插入多个元素,与AddRange方法类似。

  class Program

  {

  static void Main(string[] args)

  {

  List list = new List() { "aa", "bb", "ff" };

  list.Insert(2, "cc");//插入元素

  list.InsertRange(3, new string[] { "dd", "ee" });//插入集合

  foreach (string s in list)

  {

  Console.WriteLine(s);

  }

  Console.Read();

  }

  }

  (4)访问元素

  可以使用索引器访问集合中某个位置的元素,例如:

  class Program

  {

  static void Main(string[] args)

  {

  List list = new List() { "aa", "bb", "cc" };

  Console.WriteLine(list[1]);//访问第1个位置上的元素,下标从0开始

  Console.Read();

  }

  }

  集合的遍历,除了使用foreach外,还可以使用集合的Foreach方法,该方法的参数是一个Action委托类型,可以使用Lambda表达式。例如:

  class Program

  {

  static void Main(string[] args)

  {

  List list = new List() { "aa", "bb", "cc" };

  list.ForEach(temp => Console.WriteLine("元素:" + temp));

  //也可使用: list.ForEach(Console.WriteLine);

  Console.Read();

  }

  }

0 0
原创粉丝点击