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

use*_*291 22 .net c#

为什么编译器不喜欢我在类接口中声明一个公共方法(这导致我在这里得到的错误.NET类接口,继承和库:错误没有实现接口成员).

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

好吧,这是隐含的,但为什么要明确它会受到伤害?

Bal*_*a R 42

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

  • 好吧,这是隐含的,但为什么要明确它会受到伤害. (7认同)
  • 恕我直言,你应该只有在有替代品的时候指定一些东西.例如:一个字段可以是私有的,公共的,受保护的和/或内部的,因此指定其中一个比依赖默认值更清楚.当没有其他选择时,为什么要指定呢?这是我不喜欢VB.NET的原因之一,像Function和Sub这样的关键字是如此冗余和混乱我的代码什么都没有添加. (4认同)
  • 是的,但你必须把`static`放在静态类的方法中......即使它们只能是静态的.为什么接口不一样? (2认同)

Ant*_*ton 16

从 C# 8 开始,事情有点不同。public现在允许修改。我建议阅读这篇文章


bit*_*ise 7

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