C#接口中不允许使用的字段

Rav*_*sha 6 c# java

Java和C#语言有很多偏差,其中一个我观察到我们不能在接口中添加变量常量.来自Java背景,当我尝试这个时,我感到困惑,看到编译错误.

有没有人解释为什么会这样?

Meh*_*ari 13

字段是类的实现细节,不应公开其接口.接口是一种抽象出类的实现细节的方法.这两个概念看起来很矛盾,并没有真正融合在一起.

可以在接口中声明属性.


更新(在意识到问题是关于常量,而不是变量字段之后):认为(纯粹是我的个人推测)Java决定允许这样的构造,因为它当时没有enum类型.C#从一开始就有枚举,并且大多数时候首选的是常量.此外,您可以在C#中创建一个静态类,并在其中添加您喜欢的所有内容,并将其沿着界面发送,而不会有任何麻烦.支持这样的构造只会使接口定义更复杂.

  • 您不能在Java接口中声明"普通"字段 - 但您可以声明常量.这就是OP正在谈论的内容. (2认同)
  • @Ravisha:我从未声称我的观点是公正的,但这并不重要.C#中不存在此功能,因为与成本相比,设计人员认为它不够有用.我简单地解释了*我自己的猜测*关于为什么*他们*认为他们不应该在这个答案中包含它(正确的,恕我直言):在最坏的情况下,你已经可以用接口字段完成更多的代码. (2认同)