最近有一個疑問:IList已經繼承了ICollection<T>,而ICollection<T>繼承了 IEnumerable<T>, IEnumerable,那為什麼IList還要繼承 IEnumerable<T>, IEnumerable? 於是我自己寫了介面測試:用dnSpy反編譯看到,Tes ...
最近有一個疑問:IList已經繼承了ICollection<T>,而ICollection<T>繼承了 IEnumerable<T>, IEnumerable,那為什麼IList還要繼承 IEnumerable<T>, IEnumerable?
於是我自己寫了介面測試:用dnSpy反編譯看到,Test3介面繼承了Test1,Test2。這就說明介面其實不支持跟類一樣的繼承的,但是我們實際用的時候卻跟類用法一樣,好像支持繼承,這其實是編譯器幫我們補齊了介面的定義,添加上了Test1。