我想知道是否有任何方法可以写出相同的内容:
string test = () => { return "text"; }(); // Error
注意最后的(),它会立即评估并将返回值设置为' test'。
据我所知,没有办法做到这一点?
谢谢!
答案 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;
}