2017-09-26 46 views
1

我想知道是否有写这相当于任何方式:有没有一个C#等价于这个javascript-esqe代码? (立即调用一个lambda)

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

公告的()结尾,这将对立即评估,制定回归的效果值'测试'。

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

谢谢!

+2

'字符串测试=新的函数功能(()=> “文本”)();' –

+1

你有没有看到这个帖子:https://stackoverflow.com/questions/10198370/execute-lambda-expression - 立即定义后? –

回答

2

你必须明确地指定委托类型:

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

或只是

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

,如果你这样做是为了减少一些变量的地方到拉姆达范围,你可以声明嵌套C#中方法的作用域例如

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