方差
通用介面和委託可以分別使用 out
和 in
關鍵字將其型別引數標記為協變或逆變 。然後,這些宣告將被用於型別轉換,包括隱式和顯式,以及編譯時和執行時。
例如,現有的介面 IEnumerable<T>
已被重新定義為協變:
interface IEnumerable<out T>
{
IEnumerator<T> GetEnumerator();
}
現有的介面 IComparer 已被重新定義為逆變:
public interface IComparer<in T>
{
int Compare(T x, T y);
}