【问题标题】:What different between IData<out T> and IData<T> [duplicate]IData<out T> 和 IData<T> 有什么不同 [重复]
【发布时间】:2013-12-18 14:17:33
【问题描述】:

IDataIData有什么不同?

【问题讨论】:

    标签: c#


    【解决方案1】:

    考虑,

    class Fruit {}
    
    class Banana : Fruit {}
    
    interface ICovariantData<out T> {}
    
    interface IData<T> {}
    

    以及功能,

    void Peel(IData<Fruit> fruitData) { }
    
    void Peel(ICovariantData<Fruit> fruitData) { }
    

    接受ICovariantData&lt;Fruit&gt; 的函数将能够接受ICovariantData&lt;Fruit&gt;ICovariantData&lt;Bananna&gt;,因为它是一个协变接口,而BananaFruit 的一种类型,

    接受IData&lt;Fruit&gt; 的函数将只能接受IData&lt;Fruit&gt;

    【讨论】:

    • +1 最简单的解释方式
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2019-08-08
    • 2021-08-04
    • 2013-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多