C# Action和Func
来源:互联网 发布:java解压包的后缀 编辑:程序博客网 时间:2024/04/18 08:31
Action 委托(有多种类型Action<T1,T2,,,,>):
封装一个方法,无返回值。
可以使用此委托以参数形式传递方法,而不用显式声明自定义的委托。 封装的方法必须与此委托定义的方法签名相对应。 封装的方法不得有返回值。 通常,这种方法用于执行某个操作。
下面举个例子演示不带参数和带一个参数的实现,其他的则是类似;
先定义一个类
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
0 0
- C# Action和Func
- c#委托Action和Func
- C#中的Action<>和Func<>
- C#中的Action<>和Func<>
- C#中的Action<>和Func<>
- C#的Action<>和Func<>
- C#中的Action<>和Func<>
- C#中的Action<>和Func<>
- C#中的Action<>和Func<>
- C#中的Action<>和Func<>
- C#中的Action<>和Func<>
- C# Action和Func委托
- C#中的Action<>和Func<>
- C#中的Action<>和Func<>和Predicate
- C#的委托 Action<>和Func<>
- 关于c#中的Func<>和Action<>
- C#委托变量Action和Func
- c# action<> func<>
- JavaScript学习要点(二)
- 好题flag-(7.18)
- recommend
- 哈工大操作系统实验6—内存管理
- POJ 3322 Bloxorz I
- C# Action和Func
- 03-NSTimer的简单使用
- 1.文件IO函数练习及注意事项
- HDU 1159 Common Subsequence
- HDU 1243 反恐训练营
- 自动取款机中的秘钥介绍
- 学生反馈
- 1087 1 10 100 1000
- java static关键字