gpt4 book ai didi

c# - 如果其中一个接口(interface)继承自其余接口(interface),为什么 C# 中的集合类(如 ArrayList)继承自多个接口(interface)?

转载 作者:IT王子 更新时间:2023-10-29 04:09:47 24 4
gpt4 key购买 nike

当我在ArrayList关键字上按f12转到vs2008生成的元数据时,我发现生成的类声明如下

public class ArrayList : IList, ICollection, IEnumerable, ICloneable

我知道 IList 已经继承了 ICollection 和 IEnumerable,那么为什么 ArrayList 还要冗余地继承这些接口(interface)呢?

最佳答案

好的,我已经做了一些研究。如果您创建以下层次结构:

  public interface One
{
void DoIt();
}

public interface Two : One
{
void DoItMore();
}

public class Magic : Two
{
public void DoItMore()
{
throw new NotImplementedException();
}

public void DoIt()
{
throw new NotImplementedException();
}
}

并编译它,然后在不同的解决方案中引用 DLL,键入 Magic 并按 F12,您将得到以下内容:

 public class Magic : Two, One
{
public Magic();

public void DoIt();
public void DoItMore();
}

您会看到接口(interface)层次结构变平了,还是编译器正在添加接口(interface)?如果您使用反射器,您也会得到相同的结果。

更新:如果你在 ILDASM 中打开 DLL,你会看到它说:

实现...两个

实现...一个。

关于c# - 如果其中一个接口(interface)继承自其余接口(interface),为什么 C# 中的集合类(如 ArrayList)继承自多个接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1023375/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com