2017-09-26 49 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; 
} 
相關問題