C#委托基础系列原于2011年2月份发表在我的新浪博客中,现在将其般至本博客。
此委托返回一个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();
}
}
本文参考自金旭亮老师的《.NET 4.0面向对象编程漫谈》有关代理的内容
分享到:
相关推荐
很多初学C#编程的人可能对泛型列表List的使用不是很清楚,希望这个例子能帮助大家.
net基础——泛型PPT教案学习.pptx
C#,泛型C#,泛型C#,泛型C#,泛型C#,泛型C#,泛型C#,泛型
泛型类、泛型方法、泛型接口、泛型委托 泛型类、泛型方法、泛型接口、泛型委托
博客《夯实JAVA基本之一——泛型详解(1)》对应源码,博客地址:http://blog.csdn.net/harvic880925/article/details/49872903
C 设计新思维——泛型编程与设计范式之应用 PDF,候捷译序。㆒般人对C templates 的粗略印象,大约停留在「容器(containers)」的制作上。稍有研究由会发现,templates衍生出来的C Generic Programming(泛型编程)技术...
C#的泛型C#的泛型
博客《夯实JAVA基本之一——泛型详解(2)》对应源码,博客地址:http://blog.csdn.net/harvic880925/article/details/49883589
这是一个泛型委托的示例,主要是让初学者了解泛型委托的用法,虽然很简单,但是代码有注释,我的这个例子是在vs2010中做的,用vs08的朋友们,最好还是转一下,但是绝对能实现(本程序是控制台应用程序,适合初学者)...
这是我整理的C#中关于泛型的详细讲解,虽然分数高点,算是辛苦费了。
在.NET FCL为我们提供了很多...结论:如果在C#2.0版本以上,尽量使用泛型集合类,而不使用非泛型集合类。因为,1. 泛型编程是从c#2.0开始才被.net支持的。2.泛型集合在性能和类型安全方面优于非泛型集 合。 。。。。
C# 委托、泛型与事件 C# 委托、泛型与事件 C# 委托、泛型与事件 C# 委托、泛型与事件
c#泛型类、泛型方法、泛型接口、泛型委托
在C#中通过反射操作一个List泛型。。
C#中的集合与泛型应用实例,针对集合与泛型进行详细讲解,代码简单易懂。
c#方法异常和泛型这个是学习c#的基础,也是学习其他语言的基础,可能有区别但大的方向是一致的。
委托、枚举、泛型三个总结以及简单的例子说明
C# 泛型,以及泛型接口的,简单的工厂模式,实现新闻阅览器
C#【泛型】实现的【通用】结构体转字节数组,包含网上收集的网页参考资料、非通用的【StructTest】工程、泛型实现的通用【Struct2BytesGenericType】工程。 VS2010编译运行。
不错的文章(.net)--泛型、委托与事件解析