編譯報錯: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; 實現(xiàn)這個方法 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條經(jīng)驗 獲得超7個贊
意思是說, 重寫與顯式接口實現(xiàn)方法 的約束是有基類繼承的,你不能再在子類又指定或者改變這個規(guī)則。
也就是說子類不能改變父類的 約束規(guī)則。把 public override void Add<T>(T item) where T: class 改成 public override void Add<T>(T item) 就OK。

慕哥6287543
TA貢獻1831條經(jīng)驗 獲得超10個贊
這就是字面上的意思,"泛型約束"
public override void Add<T>(T item) where T: class
比如調(diào)用這個方法時,給add傳遞泛型,而這個泛型類型必須是class(一個類),這樣有個限制就不會在調(diào)用的時候誤傳別的類型的參數(shù),不會導(dǎo)致程序錯誤。
泛型約束的引入讓程序員在操作C#類型時更加的規(guī)范和準確,為了提供強編譯時檢查和減少類型轉(zhuǎn)換.
- 2 回答
- 0 關(guān)注
- 748 瀏覽
添加回答
舉報
0/150
提交
取消