为什么Visual Studio默认在重构代码和选择提取方法时会创建一个私有静态方法?
如果我正在重构一个非静态类,并且该方法只在类中可见,为什么它是静态的?
与非静态类中的非静态方法相比,在非静态类中调用私有静态方法是否有一些性能优势?
是否可读性只是表明该方法不依赖于该类的任何成员变量?
答案 0 :(得分:28)
为什么Visual Studio默认在重构代码和选择提取方法时会创建一个私有静态方法?
仅当您的方法不访问任何成员变量/方法/属性时,它才会执行此操作。这很好,因为它基本上是基于最少假设的原则运行的:因为你不访问特定于实例的数据,所以也可以使方法static
。
与非静态类中的非静态方法相比,通过调用非静态类中的私有静态方法是否有一些性能优势?
理论上,可能会有,但我对此表示怀疑。但是,使该方法静态显示它不会访问或修改实例数据,我发现这是一个有用的提示。
答案 1 :(得分:1)
创建静态方法可能被视为性能增强,因为没有“this”指针作为变量传递。我使用ReSharper,它总是建议在没有引用类变量时将方法转换为静态。