这个javascript-esqe代码是否等同于C#? (马上叫一个lambda)

时间:2017-09-26 22:02:23

标签: c# lambda

我想知道是否有任何方法可以写出相同的内容:

string test = () => { return "text"; }(); // Error

注意最后的(),它会立即评估并将返回值设置为' test'。

据我所知,没有办法做到这一点?

谢谢!

1 个答案:

答案 0 :(得分:2)

您必须明确指定委托类型:

string test = (new Func<string>(() => { return "text"; }))();

或只是

string test = (new Func<string>(() => "text"))();

如果你这样做是为了减少lambda本地变量的范围,你可以在C#中的方法中声明嵌套范围。

string test;
{
    var r = new Random();
    string i = r.Next().ToString();
    test = i + i;
}