为什么我不能在接口中声明公共方法?

时间:2011-04-20 16:13:16

标签: c# .net

为什么编译器不喜欢我在类接口中声明一个公共方法(这导致了我在这里遇到的错误.NET Class Interface, Inheritance and Library: error does not implement interface member)。

是因为语法还是因为更基本的东西?

好吧,这是隐含的,但为什么要明确它会有什么不妥?

5 个答案:

答案 0 :(得分:41)

Interface是一个契约,在任何可以访问界面的地方,您都应该能够访问其中的所有方法。换句话说,接口中声明的所有方法都应该是公共的,因此明确说明它是没有意义的。

答案 1 :(得分:7)

接口方法是隐式公开的,因此声明它们是公开的。

答案 2 :(得分:3)

Check this out

认为这是常数,我认为这是语言设计师在考虑为什么不在接口中允许Public的原因。

答案 3 :(得分:1)

您不能在界面中使用任何访问修饰符(例如私有,部分)。这是因为实现类负责标记方法的可访问性。它保持接口单一的目的,即定义类的签名,而不是定义其访问限制。

答案 4 :(得分:0)

由于C#8有所不同。现在允许使用public修饰符。我建议阅读this article