匿名的lambda?

Bru*_*ode 1 c#

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

int val = delegate(string s)
{
    return 1;
}("test");
Run Code Online (Sandbox Code Playgroud)

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

Jon*_*eet 9

两种形式的匿名函数(lambda表达式和匿名方法)都需要特定类型才能转换为.所以这是有效的:

int val = ((Func<string, int>)(delegate(string s)
{
    return 1;
}))("test");
Run Code Online (Sandbox Code Playgroud)

这是这样的:

int val = ((Func<string, int>)(s => 1))("test");
Run Code Online (Sandbox Code Playgroud)

我实际上并不建议使用其中任何一个.使用单独的局部变量更具可读性:

Func<string, int> del = s => 1;
int val = del("test");
Run Code Online (Sandbox Code Playgroud)

(根据yBee的回答,您也可以使用类似构造函数的语法 - 但我个人更喜欢演员样式语法.)


Rys*_*gan 5

new Func<string, int>(s => 1)("test")
Run Code Online (Sandbox Code Playgroud)