爲什麼第一個和第三個表達式工作但不是第二個?Lambda表達式返回類型問題
var ss = new Func<int>(() => 0); //works
int x1 = new Func<int>(() => 0); //doesn't work --Cannot convert source type 'System.Func<int>' to target type 'int'
int x2 = new Func<string,int>((x) => 0)(""); //works
你基本上試圖把'Func'放在一個類型爲int的變量中;有一些錯誤;) –
Sehnsucht
'int x1 = new Func(()=> 0)();'會工作,因爲您然後調用函數表達式,得到0結果,然後將其分配給int。儘管如此,這與返回值並沒有多大關係,並且要注意,第一個作品是因爲您可以將任何內容分配給var。第三個原因是因爲您再次調用函數表達式(特別是使用字符串,因爲它期望)。 –
@TravisJ我們不能把任何東西放在'var'; 「只」的類型可以(靜態地)從表達式中解析出來。例如'var foo = delegate(){return 0; };'不起作用 – Sehnsucht