一尘不染

为什么需要将静态类的成员声明为静态?为什么它不只是隐式的?

c#

显然,在静态类上不能有实例成员,因为该类永远无法实例化。为什么我们需要将成员声明为静态成员?


阅读 348

收藏
2020-05-19

共1个答案

一尘不染

我一直被问到这样的问题。基本上,问题可以归结为“当编译器可以推断出有关已声明成员的事实时,该事实的显式声明应该是(1)必需的,(2)可选的还是(3)禁止的?”

没有一个简单的答案。每个案例都必须视情况而定。需要将“ static”放在静态类的成员上。将“
new”放在派生类的隐藏,非覆盖方法上是可选的。禁止在const上放置“ static”。

简要考虑您的情况,将其禁止是很奇怪的。您有一整个类,其中包含标记为“静态”的方法。您决定将类设为静态,这意味着您必须删除所有静态修饰符吗?那真是怪了。

使其成为可选项似乎很奇怪。假设您有一个静态类和两个方法,一个标记为static,一个不是。由于静态通常不是默认值,因此自然会认为它们之间会有区别。将其设置为可选似乎令人困惑。

这使得它成为必需的,这是三个选项中最糟糕的一个。

有关此类问题的更多想法,请参见http://blogs.msdn.com/b/ericlippert/archive/2010/06/10/don-t-
repeat-yourself-consts-are-already-
static.aspx。

2020-05-19