方差

通用介面和委託可以分別使用 outin 關鍵字將其型別引數標記為協變逆變 。然後,這些宣告將被用於型別轉換,包括隱式和顯式,以及編譯時和執行時。

例如,現有的介面 IEnumerable<T> 已被重新定義為協變:

interface IEnumerable<out T>
{
    IEnumerator<T> GetEnumerator();
}

現有的介面 IComparer 已被重新定義為逆變:

public interface IComparer<in T>
{
    int Compare(T x, T y);
}