C#4.0推出后,类似Linq,Lamda表达式等许多新的程序写法层次不穷.与之相关的Delegate,Action,Func,Predicate的使用和区别也常常让大家迷惑,此处就结合实际的应用,对其进行详细的说明. 在书写代码时,常常会用到委托,这个在winform下较常见,但自定义Delegate时,我们常常发现Delegate必须全局可见,才能在需要的地方进行使用,而对于私有的delegate对象,在本类中进行使用,这似乎是不方便的.下边我们来看传统的Delegate的写法. publi…
C#委托的介绍(delegate.Action.Func.predicate) 委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递.事件是一种特殊的委托. 1.委托的声明 (1). delegate delegate我们常用到的一种声明 Delegate至少0个参数,至多32个参数,可以无返回值,也可以指定返回值类型. 例:public delegate int MethodtDelegate(int x, int y);表示有两个参数,并返回int型. (2). A…
C# 委托应用总结 一.什么是委托 1.1官方解释 委托是一种定义方法签名的类型.当实例化委托时,您可以将其实例与任何具有兼容签名的方法相关联.您可以通过委托实例调用方法. 1.2个人理解 委托就是执行方法(函数)的一个类. 事件是一种特殊的委托. 二.如何申明委托 2.1 delegate public delegate int TestDelegate(int x, int y); 2.2 Action Action是无返回值的泛型委托. Action 表示无参,无返回值的委托 Action…
(转载网络文章) (1). delegate delegate我们常用到的一种声明   Delegate至少0个参数,至多32个参数,可以无返回值,也可以指定返回值类型.   例:public delegate int MethodtDelegate(int x, int y);表示有两个参数,并返回int型. (2). Action Action是无返回值的泛型委托. Action 表示无参,无返回值的委托 Action<int,string> 表示有传入参数int,string无返回值的委…
Delegate,Action,Func,匿名方法,匿名委托,事件 (转载) 一.委托Delegate 一般的方法(Method)中,我们的参数总是string,int,DateTime...这些基本的数据类型(或者没有参数),比如 publicvoid HelloWorld() {    Console.WriteLine("Hello World!");}publicvoid HelloWorld(string name) {    Console.WriteLine("…
一.委托Delegate 一般的方法(Method)中,我们的参数总是string,int,DateTime...这些基本的数据类型(或者没有参数),比如 public void HelloWorld()  {     Console.WriteLine("Hello World!"); } public void HelloWorld(string name)  {     Console.WriteLine("Hello ,{0}!", name); } 但是有…
System命名空间下已经预先定义好了三中泛型委托,Action,Func和Predicate,这样我们在编程的时候,就不必要自己去定义这些委托了 Action是没有返回值的 Func是带返回值的 不同的.netframework版本下,能定义的参数个数可能不同 Predicate,只有一个参数,返回值是bool型 /// <summary> /// Action泛型委托:.netframework4下 可以有0到16个参数 /// </summary> public void T…
[Action] 无返回值 的泛型委托,可以有0~16个参数(函数重载) public delegate void Action(); // 无参数 public delegate void Action<in T>(T obj); // 1个参数 public delegate void Action<in T1, in T2>(T1 arg1, T2 arg2); // 2个参数 // ...... 最多16个参数 // 使用举例 Action action0 = () =&g…
1.Action 分为带泛型的和不带泛型的,带泛型可传入任何类型的参数. 格式如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Input; namespace Demo1 { class Program { static void Main(string[] arg…
Tks: http://www.cnblogs.com/yjmyzz/archive/2009/11/23/1608818.html 20150801 add: http://www.cnblogs.com/wangjq/archive/2012/07/12/2587966.html…