我已經看到類似的問題,但它們涉及不同的類型,所以我認爲這是一個新問題。爲什麼「Func <bool> test = value?F:F」沒有編譯?
考慮下面的代碼:
public void Test(bool value)
{
// The following line provokes a compiler error:
// "Type of conditional expression cannot be determined because there is
// no implicit conversion between 'method group' and 'method group".
Func<bool> test = value ? F : F;
}
public bool F()
{
return false;
}
現在,根據C#3.0標準,
的 的第二和第三運算數:操作員控制的 條件表達式的類型。令X和Y爲 操作數的第二個和第三個 的類型。然後,
如果X和Y是相同的類型,則這 是條件 的類型否則,如果(第6.1節)從X存在於Y的隱式轉換 ,但不是 從Y到X,那麼Y是 條件表達式的類型。否則,如果 隱式轉換(第6.1節)存在 從Y到X,但不從X到Y,則 X是條件式 表達式的類型。否則,不能確定表達式 ,並且發生編譯時錯誤 。
在我看來,在我的示例代碼中,X和Y必須是同一類型的,因爲它們是完全一樣的實體,Func鍵。那爲什麼不編譯?
我不知道,但你能解釋你怎麼能寫一個方法名稱與void返回類型像這樣在表達式'Func' ?? – 2011-05-16 10:04:55
對不起,爲了簡化我原來的代碼中的代碼,我錯誤地刪除了返回類型。我現在修好了! – 2011-05-16 10:14:47