C# 实现IEnumerable<;T>;和IEnumerable.GetEnumerator()不能是公共的,为什么?

C# 实现IEnumerable<;T>;和IEnumerable.GetEnumerator()不能是公共的,为什么?,c#,.net,enumerator,ienumerator,C#,.net,Enumerator,Ienumerator,要实现接口成员,请指定 实现类必须是公共的。资料来源: 我知道如果它是私人的,它是可以工作的,但我想了解为什么它不能公开 当显式实现时,默认情况下接口方法是公共的,这就是为什么不能使用访问修饰符 msdn.com上的一段话: 当成员显式实现时,无法通过 类实例,但仅通过接口的实例 (默认情况下为公共) 资料来源: 附言。 隐式和显式实现之间的区别: interface MyInterface { void MyMethod(); } class A : MyInterface // I

要实现接口成员,请指定 实现类必须是公共的。资料来源:

我知道如果它是私人的,它是可以工作的,但我想了解为什么它不能公开


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

msdn.com上的一段话:

当成员显式实现时,无法通过 类实例,但仅通过接口的实例 (默认情况下为公共)

资料来源:

附言。 隐式和显式实现之间的区别:

interface MyInterface
{
   void MyMethod();
}

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

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

当使用接口名称显式实现接口的成员时,该成员将具有与接口本身相同的访问权限,并且无法修改。公共接口具有公共成员。因此,您可以说
public IEnumerator GetEnumerator()
,隐式实现接口或
IEnumerator IEnumerable.GetEnumerator()
附加链接:(类实现两种不同绘制方法的部分)和(
当显式实现成员时,无法通过类实例访问它,
). 这在.net Framework中使用,例如在显式实现
IList.Count
的数组中(因此它在数组中不直接可见)谢谢。所以显式实现意味着,实现您正在实现的接口继承的任何内容。关闭但隐式实现是指在类上实现接口方法而不显式指向接口名称。我已经更新了我的答案以显示差异。我认为评论应该是关于方法的。您的示例意味着您必须选择隐式或显式地实现类(整个类)。没有什么可以阻止您隐式地实现接口的一部分,显式地实现另一部分