为什么我不能使用这样的匿名方法?

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)

Las*_*olt 5

委托不是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)