实现IEnumerable <t>和IEnumerable.GetEnumerator()不能公开,为什么?

时间:2015-07-02 16:32:45

标签: c# .net enumerator ienumerator

  

实现接口成员,对应的成员   实施班级必须是公开的。来源:Interfaces (C# Programming Guide)

我知道它是私有的,但我想明白为什么它不公开?

must be private interface member implementation

1 个答案:

答案 0 :(得分:8)

当显式实现时,默认情况下接口方法是公共的,这就是为什么你不能使用访问修饰符。

来自msdn.com的引用:

  

当成员明确实施时,无法通过它访问   一个类实例,但只能通过接口的实例   (默认是公开的)

来源:https://msdn.microsoft.com/en-us/library/aa288461%28v=vs.71%29.aspx

P.S。 隐式和显式实现之间的区别:

interface MyInterface
{
   void MyMethod();
}

class A : MyInterface  // Implicit implementation
{
   public void MyMethod () { ... }
}

class B: MyInterface   // Explicit implementation
{
   void MyInterface.MyMethod () { ... }
}