如何在C#中调用匿名函数?

Ale*_*yev 21 c# anonymous-function

我感兴趣的是,如果可以使用C#编写类似于这个Javascript的代码:

var v = (function()
{
    return "some value";
})()
Run Code Online (Sandbox Code Playgroud)

我能做的最多是:

Func<string> vf = () =>
{
    return "some value";
};

var v = vf();
Run Code Online (Sandbox Code Playgroud)

但是我想要这样的东西:

// Gives error CS0149: Method name expected
var v = (() =>
{
    return "some value";
})();
Run Code Online (Sandbox Code Playgroud)

有没有办法调用函数让它匿名?

Tim*_*mwi 34

是的,但C#是静态类型的,因此您需要指定委托类型.

例如,使用构造函数语法:

var v = new Func<string>(() =>
{
    return "some value";
})();

// shorter version
var v = new Func<string>(() => "some value")();
Run Code Online (Sandbox Code Playgroud)

...或者演员语法,可能会因为括号太多而变得混乱:)

var v = ((Func<string>) (() =>
{
    return "some value";
}))();

// shorter version
var v = ((Func<string>)(() => "some value"))();
Run Code Online (Sandbox Code Playgroud)