0
我想知道真實世界的場景,我們使用逆變和協方差與program.I看到各種博客,但我仍然困惑我可以實現的地方。真實世界中使用的逆變和協方差.net
我想知道真實世界的場景,我們使用逆變和協方差與program.I看到各種博客,但我仍然困惑我可以實現的地方。真實世界中使用的逆變和協方差.net
你有沒有寫過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
關鍵字是逆變所以它僅適用於參數類型接口的成員。
如果out
和in
關鍵字丟失,那麼它適用於輸入參數和返回參數。這被稱爲invariance
。