显然,静态类不能有实例成员,因为该类永远无法实例化。为什么我们需要将成员声明为静态的?
最佳答案
我总是被问到这样的问题。基本上,问题归结为“当编译器可以推断出关于已声明成员的事实时,该事实的显式声明应该是 (1) 必需的,(2) 可选的,还是 (3) 禁止的?”
没有一个简单的答案。每个人都必须根据具体情况采取。需要将“静态”放在静态类的成员上。将“new”放在派生类的隐藏、非覆盖方法上是可选的。禁止将“static”放在 const 上。
简要考虑您的情况,禁止它似乎很奇怪。你有一个充满标记为“static”的方法的类。您决定将类设为静态,这意味着您必须删除所有静态修饰符?这很奇怪。
让它成为可选的似乎很奇怪;假设您有一个静态类和两个方法,一个标记为静态,一个不是。由于 static 通常不是默认值,因此认为它们之间存在差异似乎很自然。将其设为可选似乎可能会造成混淆。
这使得它成为必需的,这是三个选项中最不糟糕的。
参见 http://blogs.msdn.com/b/ericlippert/archive/2010/06/10/don-t-repeat-yourself-consts-are-already-static.aspx对这类问题有更多想法。
关于c# - 为什么静态类的成员需要声明为静态的?为什么它不只是隐含的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6005109/