如果一个类是对象的蓝图,那么静态类呢?

时间:2010-10-18 10:07:12

标签: c# .net class static-classes

逐步读取 C#,作者提到该类只是对象的蓝图,本身也没用。那么,静态类可以单独工作呢?

我确实理解静态类无法实例化的概念,并且作为一个具有静态成员的唯一实例存在。但那个废墟,有点像班级的比喻作为蓝图。如何根据这个蓝图的想法解释静态类?

6 个答案:

答案 0 :(得分:8)

不,静态类作为一个唯一实例存在。静态类有 no 个实例。只有静态成员,它们与类型本身相关联,而不是任何实例。

一旦你理解了“与课程有关的静态意义,而不是实例”,IMO就是有道理的。然而,很难在“蓝图”线上提出特别真实的类比。

值得注意的是静态方法的概念对于“普通”类与静态类完全相同:即使使用普通类,也可以在不创建类实例的情况下调用静态方法。

答案 1 :(得分:4)

乔尔·斯波尔斯基(Joel Spolsky)曾写过关于The Law of Leaky Abstraction的博客,我将宣布“泄漏类比法则”。

所有类比都打破了,虽然将一个班级视为一个蓝图是好的,但是当你看到那些不适合这种类比的东西时,不要太挂。无论如何,那个班级有静态成员是现实;蓝图类比无法容纳静态成员,是因为类比不是现实。

最后,这一切都取决于程序员的方便之处;如果使用未附加到对象的特定实例的方法很方便,则使用静态方法。一种语言功能可以使程序员的生活变得轻松,而不是为了完成类比。

答案 2 :(得分:1)

您的示例是静态类没有意义的示例。但是,如果系统永远中只有一个蓝图,那么你可以争辩说静态类是可以的。

答案 3 :(得分:1)

静态类可以视为不需要实例的方法的存储库。 它可以作为您班级的一种服务提供者。

扩展方法都是在静态类中定义的,例如。

答案 4 :(得分:1)

正如Head First C#书中所提到的,“静态”这个词并不是那么直观,很多人都对术语和术语感到困惑。

答案 5 :(得分:0)

“如果您认为某个类是用于创建对象的蓝图,那么您可以将静态字段和方法视为蓝图本身的一部分。”当时,作为cookie切割器的课程是教授OOP的类比。我认为class as blueprint是一个很大的进步:)

此致 杰夫(JAL)

P.S。嗨John S。