c 協變 逆變複習

2021-07-22 04:47:14 字數 704 閱讀 5543

c#中泛型同c++中的stl基本類似。

例子如下:

using system;

class test

public static void swap(ref t a, ref t b) //定義乙個泛型的方法

}

為了能使泛型介面引用子類物件時使用object型別來接受其它型別的物件,引入協變,例子如下

using system;

inte***ce irestore//定義乙個協變的泛型介面

t irestore.getdata()

}class test

}

總結一句話就是:object型別的介面來引用其它型別的物件時使用協變

與之相反的是:其它型別的物件來引用object型別的物件時使用逆變

注意:兩者都是建立在泛型介面的基礎之上的。

以下是逆變的例子:

using system;

inte***ce setdata//使用逆變

inte***ce getdata//使用協變

class mytest: setdata, getdata//繼承兩個泛型介面

public t getdata()

}class test

}

C 協變逆變

1.泛型的協變逆變 注意 只能放在介面或者委託的泛型引數前面 1 委託泛型引數 static class testconsole private static argumentexception test1 object obj private static exception test2 stri...

C 協變與逆變

用最簡單的最有內涵的方式進行概括 在oo哲學裡面 有個依賴倒置,這是個oo的核心 就是用父類物件可以代表後面也許動態增加的子類物件從而增加了軟體的,可擴充套件性,和相對穩定性,並且開啟了一種oo正規化 class a class a1 a class a2 a 用a a 這個物件可以表達a1,a2....

協變和逆變

協變和逆變都是術語,前者指能夠使用比原始指定的派生型別的派生程度更大的型別,後者指能夠使用比原始指定的派生型別的派生程度更小的型別。using system using system.collections.generic using system.text class derived base s...