簡單描述下協變:
例如 :主要是有個類box配生了bs,這樣一來,可以在以box類為返回值的max委託中,返回bx
當委託方法的返回型別具有的派生程度比委託簽名更大時,就稱為協變委託方法。--簡稱變我
class box{}
class bs: box {}
--------------在某個可執行的**中~~呵呵懶的寫了
public delegate box max();
public static box firstmax()
public static bs secondmax()
max maxone = firstmax;
//---------------------主要是這裡變我咯
//-注意這個bs是繼承自box,隱式轉換
max maxtoo = secondmax;
當委託方法簽名具有乙個或多個引數,並且這些引數的型別派
生自方法引數的型別時,就稱為逆變委託方法更加簡單。
class box{}
class bs: box {}
//----------------------------------------還是在某個可執行的**中
public delegate void box(box s);
public static void boxhandler(box e)
public static void bshandler(bs s)
box box1 = boxhandler;
box box2 = bshandler;
C 委託中的協變與逆變
1 簽名 返回值型別和引數。2 委託呼叫要求委託的簽名必須與呼叫的方法的簽名匹配,如果簽名不匹配,將無法通過編譯器的型別檢查。3 協變 允許所呼叫方法的返回型別可以是委託的返回型別的派生型別,當委託方法的返回型別具有的派生程度比委託簽名更大時,就稱為協變委託方法。協變委託方法的優點是 使得建立可被類...
c 協變和抗變 C 中協變與抗變(逆變)
泛型在.net 2.0中正式的引入。在使用泛型的過程中,聯絡上物件導向的繼承性。往往很容易想當然敲出類似以下 list animallst new list 顯然這樣編譯是不通過的。雖然dog和animal之間有繼承性,但是list和list這兩個類之間並沒有繼承性。如果要解決這樣的問題,用上協變與...
C 中協變與逆變的個人理解
讀了園子中一些前輩的關於c 中協變與逆變的文章,收穫很大,分享一下我的個人理解,希望用較淺顯的方式理解這個比較繞彎的概念。協變與逆變應該是clr的特性,我僅對我熟悉的c 舉例說明。說白了,它主要解決的是乙個型別轉換的問題,用乙個最簡單的泛型表示式就是 s s 當然這只是乙個抽象的表示式,而且只包含了...