C#接口公共-私有

c# interface public private

本问题已经有最佳答案,请猛点这里访问。

有人能解释一个有趣的东西是如何被强制以私有或公共的方式实现的吗?通常,当我定义接口时,每个方法/属性都是公共的。在示例中,使用"IEnumerable"生成公共方法"GetEnumerator()",但使用接口"IEnumerable"时,默认情况下,方法"IEnumerable.GetEnumerator()"是私有的。

1
2
3
4
5
6
7
8
9
10
11
12
13
public class customEnumerable<T> : IEnumerable<T>, IEnumerable
{

    public IEnumerator<T> GetEnumerator()
    {
        throw new NotImplementedException();
    }

    IEnumerator System.Collections.IEnumerable.GetEnumerator()
    {
        throw new NotImplementedException();
    }
}

谢谢!


私有成员作为接口的一部分毫无意义,因为接口中定义的所有方法都是公共的。有一个接口来定义一组方法、一个角色、一个对象必须始终实现。

私有方法只是实现细节,并不用于公共消费。

按MSDN

The CLR also allows an interface to contain static methods, static
fields, constants, and static constructors. However, a CLS-compliant
interface must not have any of these static members because some
programming languages aren’t able to define or access them. In fact,
C# prevents an interface from defining any static members. In
addition, the CLR doesn’t allow an interface to contain any instance
fields or instance constructors.

有关更多详细信息,您可以参考以下内容:C接口。隐式实现与显式实现