[問題] 介面實作的問題

看板C_Sharp作者 (撒尿牛丸)時間7年前 (2017/01/15 00:34), 編輯推噓2(204)
留言6則, 5人參與, 最新討論串1/2 (看更多)
之前看深入淺出c#有提到 如果有繼承介面的話,一定要實作介面的方法或屬性 但這幾天上班看到同事寫的程式碼時 卻發現沒有實作介面類別理的方法,卻可以順利compile沒報錯 想請問一下這是什麼原因? 附上程式碼: 介面: public interface IRepository<T> where T : class { IQueryable<T> GetAll(); T GetById(int id); void Add(T entity); void Update(T entity); void Delete(T entity); void Delete(int id); } 繼承介面的類別: public interface IRepoPostSubDtl : IRepository<T_PostSubDtl> { } 另外想請問一下where T : class這是什麼意思 請高手幫忙解答,感謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.166.129.240 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1484411657.A.ED8.html

01/15 01:06, , 1F
因為繼承它的也是一個介面 T是泛型 class代表傳進來
01/15 01:06, 1F

01/15 01:06, , 2F
的參數只能是class
01/15 01:06, 2F

01/15 17:31, , 3F
你Code裡面繼承介面的不是類別,仍然是一個介面...
01/15 17:31, 3F

01/26 20:23, , 4F
那個叫做泛型約束條件
01/26 20:23, 4F

01/27 10:22, , 5F
介面繼承介面通常用"擴充"這個詞 比較簡單易懂
01/27 10:22, 5F

01/28 17:43, , 6F
class應該是約束T必須是參考型別,struct則是實值型別.
01/28 17:43, 6F
文章代碼(AID): #1OUbC9xO (C_Sharp)
文章代碼(AID): #1OUbC9xO (C_Sharp)