亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

大大們,這啥意思啊,關于泛型約束的

大大們,這啥意思啊,關于泛型約束的

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 關注
  • 483 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號