最接近下面的东西是什么?不幸的是,下面给我一个方法名称编译错误。
int val = delegate(string s)
{
return 1;
}("test");
我也尝试了 (...)=>{...} 语法,但弄错了
最接近下面的东西是什么?不幸的是,下面给我一个方法名称编译错误。
int val = delegate(string s)
{
return 1;
}("test");
我也尝试了 (...)=>{...} 语法,但弄错了
两种形式的匿名函数(lambda 表达式和匿名方法)都需要转换为特定类型。所以这是有效的:
int val = ((Func<string, int>)(delegate(string s)
{
return 1;
}))("test");
这是这样的:
int val = ((Func<string, int>)(s => 1))("test");
我实际上并不建议使用它们中的任何一个。使用单独的局部变量更具可读性:
Func<string, int> del = s => 1;
int val = del("test");
(根据 yBee 的回答,您也可以使用类似构造函数的语法 - 但我个人更喜欢 cast 风格的语法。)
new Func<string, int>(s => 1)("test")
以下将编译:
int val = ((Func<string, int>)(s => 1))("test");
但这对我来说似乎不是很有用。