C# 协变和逆变

协变是,接口泛型参数仅用于输出的地方、并且是父接口为object,子类对象为string等类型。

interface IjiekouB<out T>//T仅用作返回值,是输出结果
    {
        T GetData();
    }
   static void Main(string[] args)
        {
            A<string> a1 = new A<string>();
            a1.storedData = "abc";
            IjiekouB<object> jb1 = a1;//父类接口object,子类对象string,string->object
            Console.WriteLine(jb1.GetData());
        }
逆变是,,接口泛型参数仅用于输入的地方。并且父接口为string等类型,子类对象为object

   interface IjiekouA<in T>//T仅用作参数,是输入
    {
        void setData(T data);
    }
static void Main(string[] args)
        {
            A<object> a1 = new A<object>();
            IjiekouA<string > ja1 = a1;//因为是做输入。string->object
            ja1.setData("abc");
            Console.WriteLine(a1.storedData);
        }



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值