C# 静态方法能否始终转换为实例方法?

C# 静态方法能否始终转换为实例方法?,c#,.net,singleton,static-methods,instance-methods,C#,.net,Singleton,Static Methods,Instance Methods,如果我们可以确保实例是单例的,那么静态方法总是可以转换为实例方法吗?是吗?当然,标记为static的方法可以转换为实例方法。标记为static的方法必须是不使用特定于实例的任何状态信息的方法(除非该实例作为参数传入)。它们可以重写为实例方法,但仍然不依赖于实例特定的状态信息(或者改用this。当然可以这样做,但可能会破坏调用静态方法的现有代码。特别是如果方法是公开可见的。使用静态方法与实例方法是一个设计问题,如果有理由让静态方法保持静态,为什么要将静态方法转换为实例方法?如果实例是单例的,为什么

如果我们可以确保实例是单例的,那么静态方法总是可以转换为实例方法吗?是吗?

当然,标记为
static
的方法可以转换为实例方法。标记为
static
的方法必须是不使用特定于实例的任何状态信息的方法(除非该实例作为参数传入)。它们可以重写为实例方法,但仍然不依赖于实例特定的状态信息(或者改用
this

当然可以这样做,但可能会破坏调用静态方法的现有代码。特别是如果方法是公开可见的。

使用静态方法与实例方法是一个设计问题,如果有理由让静态方法保持静态,为什么要将静态方法转换为实例方法?如果实例是单例的,为什么要费心呢?静态类(和静态方法)实际上是singleton模式的一个实现。如果必须对非常复杂的类进行实例处理,而只调用一个绝对不依赖任何状态信息的方法(应该是静态的),则可能会出现一些性能问题。singleton类中的GetInstance()方法除外;)@Matten:不,它也可以重写为实例方法。