c# 接口 公共 私有

52 浏览
0 Comments

c# 接口 公共 私有

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

0
0 Comments

C#中的接口(interface)是用来定义一组方法,一个对象必须实现这些方法。接口中的所有方法都是公共的(public),而私有的(private)成员在接口中是没有意义的。私有方法只是实现的细节,不适合公共使用。

根据MSDN的说明:

CLR(公共语言运行时)允许接口包含静态方法、静态字段、常量和静态构造函数。然而,符合CLS(公共语言规范)的接口不能有这些静态成员,因为有些编程语言无法定义或访问它们。实际上,C#禁止接口定义任何静态成员。此外,CLR不允许接口包含任何实例字段或实例构造函数。

具体详情可以参考:C# Interfaces. Implicit implementation versus Explicit implementation

根据上述信息可知,C#中接口中只能定义公共的方法,而不能定义私有的方法。这是因为接口是用来定义对象必须实现的公共方法,私有方法只是实现细节,不应该对外公开。此外,接口也不能包含静态成员、实例字段和实例构造函数。

因此,如果在C#中定义接口时使用了私有方法,编译会报错。解决方法是将私有方法改为公共方法。

以下是一个示例代码,展示了如何定义一个合法的接口:

public interface IExampleInterface
{
    void Method1();  // 公共方法
    void Method2();  // 公共方法
}

0