猿问

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

编译报错:

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);
            }
        }


HUWWW
浏览 448回答 2
2回答

慕森王

意思是说, 重写与显式接口实现方法 的约束是有基类继承的,你不能再在子类又指定或者改变这个规则。也就是说子类不能改变父类的 约束规则。把 public&nbsp; override void Add<T>(T item) where T: class 改成 public&nbsp; override void Add<T>(T item) 就OK。

明月笑刀无情

这就是字面上的意思,"泛型约束"public&nbsp; override void Add<T>(T item) where T: class比如调用这个方法时,给add传递泛型,而这个泛型类型必须是class(一个类),这样有个限制就不会在调用的时候误传别的类型的参数,不会导致程序错误。泛型约束的引入让程序员在操作C#类型时更加的规范和准确,为了提供强编译时检查和减少类型转换.
随时随地看视频慕课网APP
我要回答