.Net类库预定义委托之Predicate

来源:互联网 发布:网络用语然是什么意思 编辑:程序博客网 时间:2024/06/01 09:50

委托Action,Func,Predicate是平时开发中使用的较多的系统预定义委托。

三者均位于.Net类库的System 命名空间下。

本文将对三者中的Predicate 泛型委托进行介绍,希望能为那些对此感兴趣的读者带来一定的帮助。

一开始,我们还是来看一个Predicate泛型委托的小例子,代码如下:

Predicate<string> printPredicate = delegate(string input){     if (input == "tiana")     {          return true;     }     return false;};if (printPredicate("tiana")){     Console.WriteLine("Hello World");}else{     Console.WriteLine("555");}

上面的代码首先利用匿名方法创建了委托Predicate<T>的委托实例printPredicate该匿名方法的主要工作是:对输入的字符串进行判断,若输入字符串是"tiana"则返回true,否则返回false。

接下来,在条件语句中调用委托实例printPredicate并根据printPredicate的返回值做出不同的处理:是打印"Hello World"还是打印"555"

很显然,这里会输出"Hello World"因为传入参数为"tiana"所以委托实例会返回true。

通过对前面小例子的学习,我们已基本了解了Predicate<T>到底是什么样的一种委托?

Predicate<T>委托封装一类方法,这类方法接受一个输入参数,返回一个bool类型的值。

下面给出MSDN上的官方解释。

结合本文所给的实例及MSDN的解释,我们可以很好的理解Predicate泛型委托。

下面就结合实例来对MSDN上所给的定义进行一个说明。

MSDN上说Predicate泛型委托表示定义一组条件并确定指定对象是否符合这些条件的方法。回到我们的例子,定义中所说的“一组条件”在例子中的匿名方法中被定义。“指定对象”指的是例子中的输入参数input。可见,Predicate泛型委托表示一类方法,这类方法对输入对象(本例中的input)利用定义好的一组条件来确定该对象是否符合这些条件。最后返回bool值来指示对象是否符合这些条件。

在.Net库中,Predicate泛型委托被广泛使用。

此委托(Predicate泛型委托)由 Array 和 List 类的几种方法使用,用于在集合中搜索元素(MSDN)。

下面给出List<T>类中几个使用到Predicate泛型委托的方法的签名。

当然,在.Net库中还有其他地方也用到Predicate泛型委托,大家可以自己去研究。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 做完痔疮手术后大便困难怎么办 20岁长痔疮了怎么办 孕妇痔疮痒的难受怎么办 痔疮术后伤口不愈合怎么办 剖腹产液化伤口长的慢怎么办 内痔斑痕怎么办了能消化 油条面和稀了怎么办 解脲支原体感染怀孕怎么办 怀孕了检查出解脲支原体感染怎么办 大便是黑色的要怎么办 大人直肠给药不好意思怎么办 肛周脓肿长肉芽怎么办 二岁宝宝有直肠息肉怎么办 87岁老人得直肠息肉怎么办 做b超查出囊肿怎么办 解大便时肛门痒怎么办 生完孩子肛门痒怎么办 把达克宁软膏摸到肛门怎么办 痔疮手术后肛门痒怎么办 便秘拉完屁股疼怎么办 屁股拉屎拉破了怎么办 6岁小朋友屁眼痒怎么办 孩子屁屁偶尔痒怎么办 1岁半宝宝屁眼痒怎么办 3岁宝宝肛门痒怎么办 得痔疮发烧了怎么办啊 痔疮手术后肚子胀气怎么办 乙肝引起的发烧头痛怎么办 肠癌手术后吃了会胃疼怎么办 来月经肛门坠痛怎么办 总想排便还有血怎么办 闻了别人的口臭怎么办 有内痔肛门经常不舒服怎么办 做完肠镜肛门疼怎么办 3周宝宝得皮彦怎么办 痔疮有蚕豆大了怎么办 顺生肛门坠胀怎么办 生孩子痔疮脱出不能回纳怎么办 痔疮犯了屁眼疼怎么办 孕晚期得痔疮了怎么办 孕39周痔疮严重怎么办