在C#4.0出來之前,我對協變和逆變很興奮。它讓我喜歡理論上的正確性!但是,現在它已經出來了,我又回到了編寫普通的,日常的,無聊的代碼,我開始懷疑:我曾經使用過它嗎?我注意到我沒有有意識地使用它。我自己定義的接口或代表都沒有從中受益。 只有一個單個案例我後來發現我在不知不覺中使用了協變,但它非常微妙,我也可能沒有注意到它。試想X是一個基類和Y是它的後代: if (enumerableOfYs.Co
很明顯,T[]陣列類型不是covariant,因爲T[]的元素可以通過索引來設置。 但是,只要U派生自T,U[]就可以轉換爲T[],而不會受到編譯器的任何抱怨。 Man[] men = new[] { new Man("Aaron"), new Man("Billy"), new Man("Charlie") };
Person[] people = (Person[])men;
在似乎me
這篇文章包含很多代碼,但是如果你花些時間閱讀和理解它,我會很感激它......並且希望能提出一個解決方案 讓我們假設我構建一個網絡遊戲,實體需要繪製,其中一些來自服務器的更新。 的Drawable類負責繪製實體在屏幕上的:與每個具體IData保持不同的性質 class Drawable
{
public int ID { get; set; } // I put the ID here