List 来自MSDN的声明:
public class List<T> : IList<T>, ICollection<T>,
IEnumerable<T>, IList, ICollection, IEnumerable
Run Code Online (Sandbox Code Playgroud)
反射器给出了类似的图片.难道List真的实现所有这些(如果是为什么)?我检查过:
interface I1 {}
interface I2 : I1 {}
interface I3 : I2 {}
class A : I3 {}
class B : I3, I2, I1 {}
static void Main(string[] args)
{
var a = new A();
var a1 = (I1)a;
var a2 = (I2)a;
var a3 = (I3)a;
var b = new B();
var b1 = (I1) b;
var b2 = (I2)b;
var b3 = (I3)b; …Run Code Online (Sandbox Code Playgroud) 如果你去定义List<T>你会看到以下内容:
public class List<T> : IList<T>, ICollection<T>, IEnumerable<T>
Run Code Online (Sandbox Code Playgroud)
IList<T>已经从两个继承ICollection<T>和IEnumerable<T>.
如果List<T>只实施,那还不够IList<T>吗?