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

2023-12-02

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


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

没有一个简单的答案。每一项都必须根据具体情况具体对待。需要将“static”放在静态类的成员上。将“new”放在派生类的隐藏、非重写方法上是可选的。禁止将“static”放在 const 上。

简要考虑一下你的情况,禁止它似乎很奇怪。您有一整个类,其中充满了标记为“静态”的方法。您决定将类设为静态,这意味着您必须删除所有静态修饰符?这很奇怪。

将其设为可选似乎很奇怪;假设您有一个静态类和两个方法,一种标记为静态,一种不标记为静态。由于静态通常不是默认值,因此很自然地认为它们之间存在差异。使其成为可选似乎可能会造成混乱。

这就使得它成为必需的,作为三个选项中最不坏的一个。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐