Func、Action和Predicate是.NET自带的3个泛型委托方法,三个方法的区别其实并不大,要强行给混着用也是可以的,但是我们是有追求的人,把道理讲清楚总是好的。

一、Func是有返回值的方法(类似于Delphi里面的function),Func最多支持16个泛型参数和1个泛型返回值(最后一个固定为返回值),并且支持Lambda表达式

//无参数用法
Func<string> funcNone = delegate()
{
return "我是来打酱油的";
};
//无参数Lambda用法
Func<string> funcNoneLambda = () => "我是来打酱油的"; //一个参数用法
Func<string, bool> funcOne = delegate(string s)
{
return s.Contains("酱油");
};
//一个参数Lambda用法
Func<string, bool> funcOneLambda = s => s.Contains("酱油"); //两个参数用法
Func<int, int, int> funcTwo = delegate(int one, int two)
{
return one + two;
};
//两个参数Lambda用法
Func<int, int, int> funcTwoLambda = (one, two) => one + two;

二、Action是无返回值的方法(类似于Delphi里面的procedure),Action也是最多支持16个泛型参数,并且支持Lambda表达式

//一个参数用法
Action<string> actionOne = delegate(string s)
{
Console.Write(s);
};
//一个参数Lambda用法
Action<string> actionOneLambda = c => Console.Write(c);

三、Predicate比较特殊,它只有一个参数,而且只返回一个布尔值,并且支持Lambda表达式

//Predicate用法
Predicate<string[]> predicate = delegate(string[] s)
{
var result = from p in s where p.Contains("c") select p;
return result.ToList().Count > ? true : false;
}; //Predicate Lambda用法
Predicate<string[]> predicateLambda = s =>
{
var result = from p in s where p.Contains("c") select p;
return result.ToList().Count > ? true : false;
};

.NET自带泛型委托方法Func、Action和Predicate的更多相关文章

  1. 委托、Action泛型委托、Func泛型委托、Predicate泛型委托的用法

    一.举一委托场景:天气很热,二狗子想去买瓶冰镇可乐,但是二狗子很懒,于是他想找个人代他去,于是要有个代理人. 创建代理人之前先定义委托:public delegate string BuyColaDe ...

  2. 匿名方法、Lambda表达和自定义泛型委托以及Func、Action系统泛型委托

    1.匿名方法的概念:一个方法没有具体的名称,而只有关键字delegate.方法参数.方法体.这种方法是匿名方法. 匿名方法的好处:将具体方法和委托直接关联在一起,如果我们基于委托只需要一个方法的时候, ...

  3. 第十节:委托和事件(2)(泛型委托、Func和Action、事件及与委托的比较)

    一. 泛型委托 所谓的泛型委托,即自定义委托的参数可以用泛型约束,同时内置委托Func和Action本身就是泛型委托. 将上一个章节中的Calculator类中的方法用自定义泛型委托重新实现一下. p ...

  4. C#内置泛型委托:Func委托

    1.什么是Func委托 Func委托代表有返回类型的委托 2.Func委托定义 查看Func的定义: using System.Runtime.CompilerServices; namespace ...

  5. 系统内置委托:Func/Action

    lSystem.Func 代表有返回类型的委托 lpublic delegate TResult  Func<out TResult>(); lpublic delegate TResul ...

  6. .NET中的Action及Func泛型委托

    委托,在C#编程中占有极其重要的地位,委托可以将函数封装到委托对象中,并且多个委托可以合并为一个委托,委托对象则可以像普通对象一样被存储.传递,之后在任何时刻进行调用,因此,C#中函数回调机制的实现基 ...

  7. 使用.NET中的Action及Func泛型委托

          委托,在C#编程中占有极其重要的地位,委托可以将函数封装到委托对象中,并且多个委托可以合并为一个委托,委托对象则可以像普通对象一样被存储.传递,之后在任何时刻进行调用,因此,C#中函数回调 ...

  8. C# delegate event func action 匿名方法 lambda表达式

    delegate event action func 匿名方法 lambda表达式 delegate类似c++的函数指针,但是是类型安全的,可以指向多个函数, public delegate void ...

  9. C#基础知识六之委托(delegate、Action、Func、predicate)

    1. 什么是委托 官方解释 委托是定义方法签名的类型,当实例化委托时,您可以将其实例化与任何具有兼容签名的方法想关联,可以通过委托实例调用方法. 个人理解 委托通俗一点说就是把一件事情交给别人来帮助完 ...

随机推荐

  1. VC++通过API连接MySQL

    1.  首先安装MySQL数据库server,本文安装的是mysql-installer-community-5.6.10.1.msi这个版本号.至于各个版本号有什么不同,不在这里说明. 例如以下的默 ...

  2. JDK的命令具体解释操作

    JDK的命令具体解释1 rmic 功能说明: rmic 为远程对象生成 stub 和 skeleton. 语法: rmic [ options ] package-qualified-class-na ...

  3. ProgressBar 进度条设置百分比显示

    rawable/progressbar <layer-list xmlns:android="http://schemas.android.com/apk/res/android&qu ...

  4. Python成长之路(常用模块学习)

    Python 拥有很多很强大的模块 主要写一下常用的几个吧 大概就是这些内容了 模块介绍 time &datetime模块 random os sys shutil json & pi ...

  5. mysql中对应oracle中的to_char()和to_number()函数

    TO_CHAR(): CAST(123   AS   CHAR(3)) TO_NUMBER(): cast( '123 '   as   SIGNED   INTEGER)

  6. (转)免费天气预报接口API以及全国所有地区代码!!

    国家气象局提供的天气预报接口 接口地址: http://www.weather.com.cn/data/sk/101010100.html http://www.weather.com.cn/data ...

  7. Extract, Transform, Load

    w https://en.wikipedia.org/wiki/Extract,_transform,_load

  8. ssm框架整合-过程总结(第三次周总结)

    本周主要是完成前端界面和后端的整合. 犹豫前后端的工作完成程度不一致,只实现了部分整合. 登录界面. 可能自己最近没有把重心放在短学期的项目上,导致我们工作的总体进度都要比别慢. 虽然我们只是三个人的 ...

  9. MySQL中的SQL流程分析简述

    分析MySQL中这条语句的整个流程 update table_a set c1=xx where c2=xxx 朋友考我的一个问题在此处列出个人见解 1 客户端连接进来首先进行权限验证 2 验证通过后 ...

  10. 常用模块一(os模块、序列化模块(json和pickle))

    一.os模块 os模块是与操作系统交互的一个接口. import os # 和文件和文件夹的操作有关 os.makedirs('dirname1/dirname2') # 可生成多层递归目录 os.r ...