2017-02-19 72 views

回答

2

你有沒有寫過foreach?如果你已經使用了協方差,那麼這就是真實世界的用法。您可以使用任何類型的foreach執行IEnumerable。下面是IEnumerable簽名:

public interface IEnumerable<out T> : IEnumerable 
          ^^ 
          || 
        // See the above out keyword 

out關鍵字是協方差所以它僅適用於返回類型。

你有沒有使用過IComparable接口,那麼你已經使用了逆變函數。下面是簽名:

public interface IComparer<in T> 
          ^^ 
          || 
        // See the above in keyword 

in關鍵字是逆變所以它僅適用於參數類型接口的成員。

如果outin關鍵字丟失,那麼它適用於輸入參數和返回參數。這被稱爲invariance