變數型別作為引數和返回值
如果協變型別顯示為輸出,則包含型別是協變的。生產 T
s 的生產者就像生產 T
s。
interface IReturnCovariant<out T>
{
IEnumerable<T> GetTs();
}
如果逆變型別顯示為輸出,則包含型別是逆變的。生產 T
s 的消費者就像消費 T
s。
interface IReturnContravariant<in T>
{
IComparer<T> GetTComparer();
}
如果協變型別顯示為輸入,則包含型別是逆變的。消費 T
s 的生產者就像消費 T
s。
interface IAcceptCovariant<in T>
{
void ProcessTs(IEnumerable<T> ts);
}
如果逆變型別顯示為輸入,則包含型別是協變的。消費 T
s 的消費者就像生產 T
s。
interface IAcceptContravariant<out T>
{
void CompareTs(IComparer<T> tComparer);
}