前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >泛型List<T>使用示例

泛型List<T>使用示例

作者头像
菩提树下的杨过
发布2018-01-22 16:45:14
7780
发布2018-01-22 16:45:14
举报

代码来源于"c#高级编程(第4版)",略作修改

代码语言:javascript
复制
using System;

using System.Collections;

using System.Collections.Generic;

using System.Text;





namespace Wrox.ProCSharp.VectorAsCollection

{

    class MainEntryPoint

    {

        static void Main(string[] args)

        {



            List<Racer> racers = new List<Racer>();

            racers.Add(new Racer("Michael Schumacher", "Ferriai"));

            racers.Add(new Racer("Juan Pablo Montoya", "McLaren-Mercedes"));

            racers.Add(new Racer("Kimi Railkkonen", "McLaren-Mercedes"));

            racers.Add(new Racer("Mark Webber", "Williams-BMW"));

            racers.Add(new Racer("Rubens Barichello", "Ferriai"));



            //遍历List

            foreach (Racer R in racers)

            {

                Console.WriteLine(R);

            }



            Console.WriteLine("\n----------FindAll Method Demo-------------\n");



            //查找findAll

            FindRacer finder = new FindRacer("Ferriai");

            foreach (Racer r in racers.FindAll(new Predicate<Racer>(finder.DrivingCarPredicate)))//Predicate是一个泛型的委托

            //foreach (Racer r in racers.FindAll(new Predicate<Racer>(FindFerriai)))//就本例而言,查找开Farriai的Racer,也可以这样写,但这样不灵活,没办法将参数传入委托

            {

                Console.WriteLine(r);

            }



            Console.WriteLine("\n----------Find Method Demo-------------");

            //Find方法(若找到的结果不止一条时,显示第一条)

            FindRacer f2 = new FindRacer("McLaren-Mercedes");



            Racer R2 = racers.Find(new Predicate<Racer>(f2.DrivingCarPredicate));



            if (R2 != null)

            {

                Console.WriteLine(R2);

            }

            else

            {

                Console.WriteLine("No racer drive McLaren-Mercedes ");

            }



            Console.WriteLine("\n----------FindLast Method Demo-------------");

            FindRacer f3 = new FindRacer("McLaren-Mercedes");



            Racer R3 = racers.FindLast(new Predicate<Racer>(f2.DrivingCarPredicate));



            if (R3 != null)

            {

                Console.WriteLine(R3);

            }

            else

            {

                Console.WriteLine("No racer drive McLaren-Mercedes ");

            }



            Console.ReadLine();

        }





        //static bool FindFerriai(Racer R)

        //{

        //    return R.Car == "Ferriai";

        //}





    }





    /**/

    /// <summary>

    /// 查找Racer的类(根据car查找)

    /// </summary>

    public class FindRacer

    {

        private string _car;

        public FindRacer(string car)

        {

            this._car = car;

        }



        public bool DrivingCarPredicate(Racer r)

        {

            return r.Car == _car;

        }

    }



    /**/

    /// <summary>

    /// Racer类

    /// </summary>

    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;

        }



    }

}

运行结果:

Michael Schumacher,Ferriai Juan Pablo Montoya,McLaren-Mercedes Kimi Railkkonen,McLaren-Mercedes Mark Webber,Williams-BMW Rubens Barichello,Ferriai

----------FindAll Method Demo-------------

Michael Schumacher,Ferriai Rubens Barichello,Ferriai

----------Find Method Demo------------- Juan Pablo Montoya,McLaren-Mercedes

----------FindLast Method Demo------------- Kimi Railkkonen,McLaren-Mercedes

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2007-12-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档