Entity_Framework-协变和逆变的概念

             //协变和逆变都是在泛型中使用的。原则:更安全的使用泛型集合(约束不报错)
            //编译不报错,内部进行转换,补全代码-----------------------------------------本质(object)
            //逆变与协变只能放在泛型接口和泛型委托的泛型参数里面, 
            //在泛型中out修饰泛型称为协变,协变(covariant)  修饰返回值 ,协变的原理是把子类指向父类的关系,拿到泛型中。
            //在泛型中in 修饰泛型称为逆变, 逆变(contravariant )修饰传入参数,逆变的原理是把父类指向子类的关系,拿到泛型中。
            #region 协变(子类集合(套用)赋值父类集合)
            //协变:把子类集合赋值给父类集合(原则:更安全的使用集合)
            //1.
            //List<int> vs = new List<int>();
            //List<object> ob = vs;//把子类集合赋值给父类集合
            //2.
            //IQueryable<object> temp = from u in newsEntities.NewsListTable where u.NewsId > 5 select u;//父类集合接收
            //IQueryable<NewsListTable> temp = from u in newsEntities.NewsListTable where u.NewsId > 5 select u;//子类接收
            #endregion
            //把子类赋值给父类,用此实例也只能访问父类的属性和方法---------------安全
           
            #region 逆变(把父类集合赋值给子类集合)
            Action<object> obj = (target) => { Console.WriteLine(target.GetType().Name); };
            Action<NewsListTable> action = obj;//把子类赋值给父类
            action(new NewsListTable());//最终执行的还是父类方法
            #endregion
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值