Tho*_*mas 1 c# delegates anonymous-methods
为什么我不能拥有这个?我的意思是它会节省代表声明:
int X=delegate int(){...};
Run Code Online (Sandbox Code Playgroud)
我知道可以这样做:
delegate int IntDelegate();
...
IntDelegate del=delegate(){return 25;};
int X=del();
Run Code Online (Sandbox Code Playgroud)
委托不是int.
如果你使用.Net 3.5或更新版本,你可以使用内置的Func而不是使用自定义(如果你需要像Func那样的字符串并返回一个int,那么Func也有泛型类型):
Func<int> X = delegate() { return 255; };
Run Code Online (Sandbox Code Playgroud)
或者使用lambda表达式:
Func<int> X = () => 255;
Run Code Online (Sandbox Code Playgroud)
不幸的是,你不能说:
var X2 = () => 255;
Run Code Online (Sandbox Code Playgroud)
在C#中你可以在F#的函数式语言中做类似的事情.相反,你会在C#中说以下内容:
var X2 = new Func<int>(() => 255);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
167 次 |
| 最近记录: |