![](/img/trans.png)
[英]Why can delegates can be used interchangeably for Class methods and Static functions?
[英]Why a class with only static methods is used?
我想知道仅使用静态方法创建类的原因,例如Console
或Convert
类。 我能想到的唯一原因是将相关函数组合在一起,所以这与命名空间有何不同。
只有一个控制台,为什么你需要实例化一个类? 没有必要。 这只是一个原因。 (这只是实现单例设计模式的一种方法)
另一个原因可能是方法与实例无关,它们只是辅助方法,如Convert.XXX
。 与此相关的是扩展方法,它们必须在static
类中,因为它们与它们所包含的类的实例无关。
命名空间不能包含方法,因此您需要一个类来包装它们。
对此的一个很好的答案是对Stroustrup的采访,谈论不变量。 如果类不修改其任何属性,或者没有属性,则可能需要静态方法。
http://slesinsky.org/brian/code/stroustrup_on_invariants.html
你已经明白了。 当我们在我们非常大的项目集群中使用这些类时,可能会很清楚:
我们在项目集群中使用这样的类,例如Utilities
和Constants
功能。
这意味着您可以随时使用诸如ConvertXFromYtoZ
或WriteDebug
类的实用程序,而无需处理对象的实例。
我们也使用了“很多”不同的常量。 将它们放在一个静态位置非常好: Constants.MyArea_Type_Foo
。
顺便说一句,拥有static
Regex.Match
类也很不错。 我几乎从不使用动态Regex
类。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.