2010-12-10 69 views
1

這一次稍有不同的關於方差的問題。在C#中鍵入簽名方差,關於覆蓋

我從實驗中瞭解到C#不允許您用逆變函數覆蓋虛函數嗎?如果是這樣,那麼你是怎麼做到的,因爲我一直在「找不到合適的方法超載」。如果不是,爲什麼不呢?如果基類指定in中的值將始終爲int,並且子類可以接受一個對象,那麼問題在哪裏?

相同返回類型,應在其overrride簽名協變

什麼語言允許你這樣做嗎? (C++/Java我正在看你),如果他們讓你使用,什麼類型? (返回類型/參數列表等)

您可以有多個覆蓋?我不明白爲什麼只要簽名在技術上是獨一無二的。

Why does C#/CLR not support method override co/contra-variance?

我讀到這,我沒有看到答案的任何問題。我知道通用差異,我知道它很棒。我想知道方法簽名方差,不僅僅在C#中,而且在C#中(即包括但不限於)。如果它不存在,我想確認這個和一個解釋(它是一個實現細節?是我的類型理論錯了嗎?它只是CLR/C#碰巧不支持這個特定的功能嗎?它是我沒有的東西'想到因爲我不必處理實施CLR,因此不知道具體的複雜細節?)

回答

0

找到了答案,C#規範中的第10.6.4節指出,覆蓋必須具有相同的簽名