C# Action和Func
2015-07-18 21:55
447 查看
Action 委托(有多种类型Action<T1,T2,,,,>):
封装一个方法,无返回值。
可以使用此委托以参数形式传递方法,而不用显式声明自定义的委托。 封装的方法必须与此委托定义的方法签名相对应。 封装的方法不得有返回值。 通常,这种方法用于执行某个操作。
下面举个例子演示不带参数和带一个参数的实现,其他的则是类似;
先定义一个类
我们可以这样使用:
或者与匿名方法一块使用:
或者与lambda表达式一块使用:
Func<TResult> 委托(有多种类型Func<T1,T2,,,,TResult>):
封装一个方法,有返回 TResult 参数指定的类型值。
现在我们把Person类稍微修改一下:
我们可以这样使用:
这时,返回的name 为 fucun , result 为false;
其与匿名方法和lambda的结合使用在此就不一一列出了,可以自己测试;
可以说:Action 与 Func的区别在于Action 无返回值,而Func有返回值。
参考:
https://msdn.microsoft.com/zh-cn/library/system.action(v=vs.110).aspx
https://msdn.microsoft.com/zh-cn/library/bb534960(v=vs.110).aspx
封装一个方法,无返回值。
可以使用此委托以参数形式传递方法,而不用显式声明自定义的委托。 封装的方法必须与此委托定义的方法签名相对应。 封装的方法不得有返回值。 通常,这种方法用于执行某个操作。
下面举个例子演示不带参数和带一个参数的实现,其他的则是类似;
先定义一个类
public class Person{ string name ; public Person (string name_) { name = name_; } public void ShowName() { Debug.Log ("name = " + name); } public void ChangeName(string name_) { name = name_; Debug.Log ("change Name = " + name); } }Person类中有一个ShowName无参方法用来显示名字, 一个ChangeName有参数方法用来更改名字的(都无返回类型);
我们可以这样使用:
Person per = new Person ("fucun"); ac = per.ShowName ; ac2 = per.ChangeName; ac (); ac2 ("fucun2");
或者与匿名方法一块使用:
Person per = new Person ("fucun"); Action ac = delegate() { per.ShowName() ; } ; Action<string> ac2 = delegate(string s) { per.ChangeName (s); }; ac (); ac2 ("fucun2");
或者与lambda表达式一块使用:
Person per = new Person ("fucun"); Action ac = () => {per.ShowName ();};//{}可有可无 Action<string> ac2 = (s) => per.ChangeName (s); ac (); ac2 ("fucun2");
Func<TResult> 委托(有多种类型Func<T1,T2,,,,TResult>):
封装一个方法,有返回 TResult 参数指定的类型值。
现在我们把Person类稍微修改一下:
public class Person{ string name ; public Person (string name_) { name = name_; } public string GetName(){ return name; } public bool CheckNameIsSame(string name_) { return name == name_; } }
我们可以这样使用:
Person per = new Person ("fucun"); Func<string> fc = per.GetName; Func<string , bool> fc2 = per.CheckNameIsSame; string name = fc (); bool result = fc2 ("fucun2");
这时,返回的name 为 fucun , result 为false;
其与匿名方法和lambda的结合使用在此就不一一列出了,可以自己测试;
可以说:Action 与 Func的区别在于Action 无返回值,而Func有返回值。
参考:
https://msdn.microsoft.com/zh-cn/library/system.action(v=vs.110).aspx
https://msdn.microsoft.com/zh-cn/library/bb534960(v=vs.110).aspx
相关文章推荐
- C# WinForm 关闭登陆窗体,打开主窗体的实现
- C#记录消息到日志文件的方法
- c# 调用外部exe程序
- C#版七层登陆
- 【转】C# WinForm窗体及其控件的自适应
- c# XML和实体类之间相互转换(序列化和反序列化)
- C#类的扩展
- C#异步调用的好处和方法
- C# 中的委托和事件
- C#泛型详解
- C#参数类型 params、out和ref
- 在C#中ParameterizedThreadStart和ThreadStart区别
- C#不定参数函数
- C#中Invoke的用法(转)
- C#中Thread.IsBackground 属性
- C# goto 语句
- C# DataTable中返回列中的最大值
- C# DataTable中返回列中的最大值
- C#中按指定质量保存图片的实例代码 24位深度
- C#中 ArrayList与string,string[],List<string> 数组集合转换