1

最接近下面的东西是什么?不幸的是,下面给我一个方法名称编译错误。

int val = delegate(string s)
{
    return 1;
}("test");

我也尝试了 (...)=>{...} 语法,但弄错了

4

3 回答 3

9

两种形式的匿名函数(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 风格的语法。)

于 2013-02-15T14:28:56.767 回答
5
new Func<string, int>(s => 1)("test")
于 2013-02-15T14:30:38.527 回答
4

以下将编译:

int val = ((Func<string, int>)(s => 1))("test");

但这对我来说似乎不是很有用。

于 2013-02-15T14:28:49.637 回答