为什么我不能拥有这个?我的意思是会不遗余力的委托声明:为什么我不能使用那样的匿名方法?
int X=delegate int(){...};
我知道这是可以做到这样:
delegate int IntDelegate();
...
IntDelegate del=delegate(){return 25;};
int X=del();
为什么我不能拥有这个?我的意思是会不遗余力的委托声明:为什么我不能使用那样的匿名方法?
int X=delegate int(){...};
我知道这是可以做到这样:
delegate int IntDelegate();
...
IntDelegate del=delegate(){return 25;};
int X=del();
托马斯
将这项工作对您:
delegate int IntDelegate();
// other stuff...
IntDelegate _del =() => 25;
jim
[编辑] - oo PS,刚刚意识到,问题是重新使它成为一个单一的班轮! - 我会想一想
因为在第一个例子中,你试图将一个委托类型分配到一个int中,而不是委托的输出到一个int中。委托是一种存储函数的类型,它只是返回一个您感兴趣的值。
委托不是int。
如果您使用的.Net 3.5或更新版本,你可以使用内置的函数功能,而不是使用自定义(Func键也有泛型类型,如果你需要一个像Func键论据TAGES一个字符串,并返回一个int):
Func<int> X = delegate() { return 255; };
或lambda表达式:
Func<int> X =() => 255;
不幸的是,你不能说:
var X2 =() => 255;
在C#中,但你可以在F#的函数式语言中做类似的事情。相反,你会说C#中的以下内容:
var X2 = new Func<int>(() => 255);
确实需要创建委托,执行它并返回值吗? 为什么不直接执行代码?
int x = new Func<int,int>(num => num*num) (3);
将返回9,但这样会:
int x = 3*3;
你看这个页面:http://msdn.microsoft.com/en-us/library/0yw3tz5k(VS.80)的.aspx – 2010-07-26 13:06:10