C#中使用List类

System.Collection.Generic命名空间中的List<T>类的用法非常类似于System.Collection命名空间的ArrayLisy类。这个类实现了IList,ICollection和IEnumerable接口,

例:Racer类作为添加到集合的元素,表示赛车手,包括两个字段:名字和汽车,可用属性来访问

  public class Racer
        {
            private string name;
            public string Name
            {
                get
                {
                    return name;
                }
            }

            private string car;
            public string Car
            {
                get
                {
                    return car;
                }
            }

            public Racer(string name, string car)
            {
                this.name = name;
                this.car = car;
            }

            public override string ToString()
            {
                return name + "," + car;
            }
        }

       racer变量定义为List<Racer>类型。使用new操作符创建该类型一个新对象。这里使用List<T>类的默认构造函数。这个类的另一个构造函数为特定数量的元素预留了内存空间,还有一个构造函数负责从一个List<t>类型的集合中复制元素。

       因为List<T>类用具体的Racer类实例化,所以现在只能用Add()方法增加racer对象,在List<T>类中,Add()方法定义为void Add(T item).在以下示例代码中,创建实例,并添加到集合中。接着使用foreach语句,迭代集合中的每个赛手,并显示到控制台上:

  List<Racer> racers = new List<Racer>();
            racers.Add(new Racer("MS","F"));
            racers.Add(new Racer("JPM","MM"));
            racers.Add(new Racer("KR","MM"));
            racers.Add(new Racer("MW","WB"));
            racers.Add(new Racer("RB","F"));

            foreach (Racer r in racers)
            {
                Console.WriteLine(r);
            }

在List<T>类中,不仅可以使用枚举添加和访问元素,还可以插入和删除元素,清空集合,把元素复制到数组中。下面讨论更强大的功能。List<T>提供方法可以搜索和转换元素,是元素逆序,等等。

1 查找元素

   List<T>类提供了Find()和FindAll()方法,他们的声明如下:

      public T Find (Predicate <T> match)

       public T FindAll(Predicate <T> match)

这两种方法都把Predicate <T>作为参数。Predicate <T>是一个委托,它引用了个谓词方法。谓词是返回布尔值的方法。true表示有一个匹配,false表示没有。当为true是Find返回第一个匹配,FindAll返回所有元素。使用之前要先定义谓词。


         public class FindRacer
        {
            private string car;
            public FindRacer(string car)
            {
                this.car = car;
            }
            public bool DrivingCarPredicate(Racer racer)
            {
                return racer.Car == car;
            }
        }

 

要查找特定的赛手,应该使用F启动和初始化FindRacer类。使用List<T>类的FindAll()方法。FindAll方法,实例化一个谓词委托,这个谓词委托接受finder .DrivingCarPredicate方法。FindAll()返回一个List<Racer>类型的列表,再使用foreach迭代所有返回的赛手,并在控制台显示他们:

 List<Racer> racers = new List<Racer>();
            racers.Add(new Racer("MS","F"));
            racers.Add(new Racer("JPM","MM"));
            racers.Add(new Racer("KR","MM"));
            racers.Add(new Racer("MW","WB"));
            racers.Add(new Racer("RB","F"));

            FindRacer finder = new FindRacer("F");
            foreach (Racer racer in racers.FindAll(new Predicate<Racer>(finder.DrivingCarPredicate)))
            {
                Console.WriteLine(racer);
 
            }

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/hwg9741/archive/2008/06/03/2506345.aspx

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页