Resharper喜欢指出每个asp.net页面可以静态化的多个函数.如果我让它们静止,对我有帮助吗?我应该将它们设置为静态并将它们移动到实用程序类吗?
我最近在Eclipse中查看了我的警告并遇到了这个问题:

如果方法可以声明为static,它将给出编译器警告.
[edit] Eclipse帮助中的确切引用,对私有和最终的压力:
启用后,编译器将对private或final方法发出错误或警告,并且仅引用静态成员.
是的我知道我可以关掉它,但我想知道打开它的原因?
为什么将每个方法声明为静态是一件好事?
这会带来任何性能优势吗?(在移动领域)
指出一个方法为静态,我想是显示你不使用任何实例变量因此可以移动到utils样式类?
在一天结束时,我应该关闭它"忽略"或者我应该修复它给我的100多个警告吗?
你认为这只是污染代码的额外关键字,因为编译器无论如何只会内联这些方法吗?(有点像你没有声明每个变量你可以最终但你可以).
我经常思考这个问题......这可能是一个愚蠢的问题但是这里有.
说我有这个班:
public class SomeClass
{
public int AProperty { get; set; }
public void SomeMethod()
{
DoStuff(AProperty);
}
}
Run Code Online (Sandbox Code Playgroud)
这样做有什么好处:
public class SomeClass
{
public int AProperty { get; set; }
public static void SomeMethod(int arg)
{
DoStuff(arg);
}
}
Run Code Online (Sandbox Code Playgroud)
显而易见的唯一优势是我现在可以SomeMethod直接访问.
因此,如果一点点重构允许或浪费我的时间,将这些方法保持静态是一种好习惯吗?
编辑:我忘了提及(和ShellShock的评论提醒我),我问的原因是我使用ReSharper并且总是提出"方法X可以变为静态"的建议等等......
我想知道为什么resharper建议一个方法在非静态类中是静态的?它是否用于保存实例的创建?这是性能问题吗?另外,为什么它建议'const'一些参数?这是性能问题吗?我很想得到一些解释
我理解它的方式是,在非静态类中将成员变量声明为static会导致该成员变量唯一,而不管该类的实例数.
现在,在非静态类中声明的静态方法会发生什么?而且(最重要的是),在非静态类中声明静态方法的重点是什么?
谢谢你的帮助
我使用静态方法来处理我真正想要静态的事情。我使用 ReSharper 来提高代码质量。有时 ReSharper 建议可以将方法设为静态。
当我上以下课时:
public class WhatEverClass {
private string DoSomethingFancy(string input)
{
string fancyStuff;
// Fancy Stuff here
return fancyStuff;
}
public WhatEverClass() {
string awesome=DoSomethingFancy("some fancy string");
}
}
Run Code Online (Sandbox Code Playgroud)
ReSharper 可能会说“DoSomethingFancy 可以变为静态”。
我知道它可以变成静态的,但是真的有充分的理由这样做吗?或者我应该忽略这些建议?
c# ×6
resharper ×3
static ×3
.net ×2
coding-style ×1
java ×1
methods ×1
optimization ×1
parameters ×1
refactoring ×1