编译报错: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 回答
aluckdog
TA贡献1847条经验 获得超7个赞
意思是说, 重写与显式接口实现方法 的约束是有基类继承的,你不能再在子类又指定或者改变这个规则。
也就是说子类不能改变父类的 约束规则。把 public override void Add<T>(T item) where T: class 改成 public override void Add<T>(T item) 就OK。
慕哥6287543
TA贡献1831条经验 获得超10个赞
这就是字面上的意思,"泛型约束"
public override void Add<T>(T item) where T: class
比如调用这个方法时,给add传递泛型,而这个泛型类型必须是class(一个类),这样有个限制就不会在调用的时候误传别的类型的参数,不会导致程序错误。
泛型约束的引入让程序员在操作C#类型时更加的规范和准确,为了提供强编译时检查和减少类型转换.
- 2 回答
- 0 关注
- 711 浏览
添加回答
举报
0/150
提交
取消