·天新网首页·加入收藏·设为首页·网站导航
数码笔记本手机摄像机相机MP3MP4GPS
硬件台式机网络服务器主板CPU硬盘显卡
办公投影打印传真
家电电视影院空调
游戏网游单机动漫
汽车新车购车试驾
下载驱动源码
学院开发设计
考试公务员高考考研
业界互联网通信探索
您现在的位置:天新网 > 软件开发 > .Net开发 > C#
C#委托基础6——泛型委托Predicate
http://www.21tx.com 2012年11月29日

此委托返回一个bool值,该委托通常引用一个"判断条件函数"。

需要指出的是,判断条件一般为“外部的硬性条件”,比如“大于50”,而不是由数据自身指定,不如“查找数组中最大的元素就不适合”。

例一

class Program    
{    
        bool IsGreaterThan50(int i)    
        {    
            if (i > 50)     
                return true;    
            else
                return false;    
        }    
      
        static void Main(string[] args)    
        {    
            Program p=new Program();    
      
            List<int> lstInt = new List<int>();    
            lstInt.Add(50);    
            lstInt.Add(80);    
            lstInt.Add(90);    
      
            Predicate<int> pred = p.IsGreaterThan50;    
            int i = lstInt.Find(pred);                         // 找到匹配的第一个元素,此处为80    
            Console.WriteLine("大于50的第一个元素为{0}",i);    
      
            List<int> all = lstInt.FindAll(pred);    
            for (int j = 0; j < all.Count(); j++)    
            {    
                Console.WriteLine("大于50的数组中元素为{0}", all[j]);  // 找出所有匹配条件的    
            }    
            Console.ReadLine();    
        }    
}

例二

class Staff    
{    
        private double salary;    
      
        public double Salary    
        {    
            get { return salary; }    
            set { salary = value; }    
        }    
      
        private string num;    
      
        public string Num    
        {    
            get { return num; }    
            set { num = value; }    
        }    
      
        public override string ToString()    
        {    
            return "Num......" + num + "......" + "......" + "Salary......" + salary;    
        }    
}    
      
      
class Program    
{    
        bool IsSalaryGreaterThan5000(Staff s)    
        {    
            if (s.Salary > 5000)    
                return true;    
            else
                return false;    
        }    
      
        static void Main(string[] args)    
        {    
            Program p = new Program();    
      
            List<Staff> allStaff = new List<Staff>    
            {    
                new Staff{Num="001",Salary=9999.9},    
                new Staff{Num="002",Salary=8991},    
                new Staff{Num="003",Salary=10000.8},    
                new Staff{Num="004",Salary=4999.99}    
            };    
      
            Predicate<Staff> s = p.IsSalaryGreaterThan5000;    
            Staff theFirstOne = allStaff.Find(s);    
            Console.WriteLine(theFirstOne);              // 找出第一个    
                  
            List<Staff> all = allStaff.FindAll(s);    
            for (int i = 0; i < all.Count(); i++)    
            {    
                Console.WriteLine(all[i]);               // 找出所有满足条件的    
            }    
            Console.ReadLine();    
        }    
}

本文出自 “IT Fat Man” 博客,请务必保留此出处http://woshixy.blog.51cto.com/5637578/1071012

上一篇: C#委托基础2——多路委托
下一篇: C#委托基础5——泛型委托Action

关于我们 | 联系我们 | 加入我们 | 广告服务 | 投诉意见 | 网站导航
Copyright © 2000-2011 21tx.com, All Rights Reserved.
晨新科技 版权所有 Created by TXSite.net