为了账号安全,请及时绑定邮箱和手机立即绑定

大大们,这啥意思啊,关于泛型约束的

大大们,这啥意思啊,关于泛型约束的

HUWWW 2018-09-18 04:05:07
编译报错:Error 1 Constraints for override and explicit interface implementation methods are inherited from the base method, so they cannot be specified directly 这上面的英文说啥呢?下面是代码片段    public class SQLDataAccess : DataAccess    {        public SQLDataAccess()        {            base.virtualRoomDC = new VirtualRoomDataContext();        }      // public abstract void Add<T>(T item) where T: class; 实现这个方法        public  override void Add<T>(T item) where T: class        {            if (this.IsValidated<T>(item))            {                Table<T> table = base.virtualRoomDC.GetTable<T>();                bool itemAlreadyExists = table.Contains<T>(item);                table.InsertOnSubmit(item);            }        }
查看完整描述

2 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

意思是说, 重写与显式接口实现方法 的约束是有基类继承的,你不能再在子类又指定或者改变这个规则。

也就是说子类不能改变父类的 约束规则。把 public  override void Add<T>(T item) where T: class 改成 public  override void Add<T>(T item) 就OK。


查看完整回答
反对 回复 2018-09-25
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

这就是字面上的意思,"泛型约束"

public  override void Add<T>(T item) where T: class

比如调用这个方法时,给add传递泛型,而这个泛型类型必须是class(一个类),这样有个限制就不会在调用的时候误传别的类型的参数,不会导致程序错误。

泛型约束的引入让程序员在操作C#类型时更加的规范和准确,为了提供强编译时检查和减少类型转换.


查看完整回答
反对 回复 2018-09-25
  • 2 回答
  • 0 关注
  • 447 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信