我想知道仅使用静态方法创建类的原因,例如Console
或Convert
类。我能想到的唯一原因是将相关功能组合在一起,所以这与命名空间有何不同。
答案 0 :(得分:6)
只有一个控制台,为什么你需要实例化一个类?没有必要。这只是一个原因。 (这只是实现单例设计模式的一种方式)
另一个原因可能是方法与实例无关,它们只是辅助方法,如Convert.XXX
。与此相关的是扩展方法,它们必须位于static
类中,因为它们与它们所包含的类的实例无关。
命名空间不能包含方法,因此您需要一个类来包装它们。
答案 1 :(得分:3)
对此的一个很好的答案是对Stroustrup的采访,谈论不变量。如果类没有修改任何属性,或者没有属性,则可能需要静态方法。
http://slesinsky.org/brian/code/stroustrup_on_invariants.html
答案 2 :(得分:0)
你已经明白了。当我们在我们非常大的项目群中使用这些类时,可能会很清楚:
我们使用这样一个类,例如作为我们项目群中的Utilities
和Constants
功能。
这意味着您可以随时使用ConvertXFromYtoZ
或WriteDebug
之类的实用程序,而无需关注对象的实例。
我们也经常使用'不同的常数。将它们放在一个静态的地方非常好:Constants.MyArea_Type_Foo
。
顺便说一下,拥有static
Regex.Match
类也很不错。我几乎从不使用动态Regex
类。