IData< out T> 和 IData< T> ?
答案 0 :(得分:5)
考虑,
class Fruit {}
class Banana : Fruit {}
interface ICovariantData<out T> {}
interface IData<T> {}
和功能,
void Peel(IData<Fruit> fruitData) { }
void Peel(ICovariantData<Fruit> fruitData) { }
接受ICovariantData<Fruit>
的功能将能够接受ICovariantData<Fruit>
或ICovariantData<Bananna>
,因为它是协变接口,而Banana
是Fruit
的类型,
接受IData<Fruit>
的功能只能接受IData<Fruit>
。