我有一個類型爲Func<dynamic>
的變量,我試圖給它賦值。如果我把它分配給一個返回值類型的方法(例如int
),我得到的錯誤無法將返回值類型的方法分配給Func <dynamic>
「詮釋方法名()」有錯誤的返回類型
如果我換的方法lambda調用,但是,它工作正常。另外返回引用類型的方法似乎工作正常。
private string Test()
{
return "";
}
private int Test2()
{
return 0;
}
Func<dynamic> f = Test; // Works
Func<dynamic> g = Test2; // Does not
Func<dynamic> h =() => Test2(); // Works
直接分配案例有什麼問題?
這不只是'動態'。如果您將'Func'更改爲'Func
@MarcinJuraszek從關於委託相容性的規範中,「對於每個值參數(沒有ref或out修飾符的參數),從參數類型存在標識轉換(§6.1.1)或隱式引用轉換(§6.1.6)在D中相應於M中的參數類型。「在這種情況下存在隱式轉換,但它不是標識或引用轉換。 – Servy