程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#委托基礎——泛型委托Predicate

C#委托基礎——泛型委托Predicate

編輯:C#入門知識

C#委托基礎系列原於2011年2月份發表在我的新浪博客中,現在將其般至本博客。

 

此委托返回一個bool值,該委托通常引用一個"判斷條件函數"。需要指出的是,判斷條件一般為“外部的硬性條件”,比如“大於50”,而不是由數據自身指定,不如“查找數組中最大的元素就不適合”。

 

例一

[csharp] 
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 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++)
            {  www.2cto.com
                Console.WriteLine("大於50的數組中元素為{0}", all[j]);  // 找出所有匹配條件的
            }

            Console.ReadLine();
        }
}

例二

[csharp] 
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(); 
        } 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved