IData <out t =“”>和IData <t> </t> </out>之间有什么不同

时间:2013-12-18 14:17:33

标签: c#

IData&lt; out T&gt; IData&lt; T&gt;

1 个答案:

答案 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>,因为它是协变接口,而BananaFruit的类型,

接受IData<Fruit>的功能只能接受IData<Fruit>