【发布时间】:2010-09-19 11:20:37
【问题描述】:
这是MSDN has to say under When to Use Static Classes:
static class CompanyInfo { public static string GetCompanyName() { return "CompanyName"; } public static string GetCompanyAddress() { return "CompanyAddress"; } //... }以静态类为单位 方法组织不 与特定对象相关联。 此外,静态类可以使您的 实现更简单更快 因为您不必创建一个 对象以调用其方法。 组织方法很有用 在课堂上以一种有意义的方式, 比如 Math 类的方法 在 System 命名空间中。
对我来说,该示例似乎并未涵盖静态类的许多可能使用场景。过去,我曾将静态类用于相关函数的无状态套件,但仅此而已。那么,在什么情况下应该(也不应该)将一个类声明为静态的?
【问题讨论】:
-
作为 C# 的新手,解释一下为什么这被标记为 singleton vs static class 的重复问题以及这两者之间如何相互关联会有所帮助。
-
mr5,单例和静态类基本上是一回事。单例是其他语言用来模拟静态类的设计模式,因为其他语言(如Java)没有内置静态类,所以你必须依赖单例设计模式来创建这样的类。 Static类是不能实例化的类,可以直接使用(比如Console类)。 tutorialspoint.com/design_pattern/singleton_pattern.htm 如果你检查这个,你会看到当你使用 Singleton 时,你并没有创建一个新的实例......
-
...您正在使用已在 Singleton 类中创建的那个,并且您可以通过 .getInstance() 方法访问它。 C# 通过一个简单的关键字“static”解决了所有这些问题。
-
单例类和静态类本质上是完全相反的东西。一个可以实例化,另一个禁止实例化。
-
恕我直言,在为对象设计属性时,请考虑盒子内部的实例化和开箱即用的静态类。