|
在《上篇》中我們揭示了“缺省參數”的本質,現在我們接著來談談C#4.0中另一個重要的新特性:協變(Covariance)與逆變(Contravariance)。對于協變與逆變,大家肯定不會感到陌生,但是我相信有很多人不能很清晰地說出他們之間的區別。我希望通過這篇文章能夠讓讀者更加深刻的認識協變與逆變。但是也不排除另一種可能,那就是讀者這篇文章你對這兩個概念更加模糊。文章一些內容僅代表個人觀點,如有不妥,還望指正。
目錄
一、兩個概念:強類型與弱類型
二、委托中的協變與逆變的使用
三、接口中的協變與逆變的使用
四、從Func<T,TResult>看協變與逆變的本質
五、逆變實現了“算法”的重用
一、兩個概念:強類型與弱類型
為了后面敘述方便,我現在這里自定義兩個概念:強類型和弱類型。在本篇文章中,強類型和弱類型指的是兩個具有直接或者間接繼承關系的兩個類。如果一個類是另一個類的直接或者間接基類,那么它為弱類型,直接或者間接子類為強類型。后續的介紹中會用到的兩個類Foo和Bar先定義在這里。Bar繼承自Foo。Foo是弱類型,而Bar則是強類型。
1: public class Foo
2: {
3: //Others Members...
4: }
5: public class Bar:Foo
6: {
7: //Others Members...
8: }
NET技術:C#4.0新特性-&quot;協變&quot;與&quot;逆變&quot;以及背后的編程思想,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。