ReSharper喜欢在每个ASP中指出多个函数。NET页面,可以设置为静态。如果我把它们变成静态的,对我有帮助吗?我是否应该将它们设置为静态并将它们移动到实用程序类中?
当前回答
如果函数在许多页面中共享,你也可以把它们放在一个基页类中,然后让所有使用该功能的asp.net页面继承它(函数也可以仍然是静态的)。
其他回答
使方法静态意味着您可以从类外部调用该方法,而无需首先创建该类的实例。这在使用第三方供应商对象或附加组件时非常有用。想象一下,如果你在调用con. writeline()之前必须先创建一个Console对象“con”;
静态方法与实例方法 c#语言规范的静态成员和实例成员解释了这种差异。一般来说,静态方法可以提供比实例方法非常小的性能增强,但仅在某些极端情况下(有关详细信息,请参阅此回答)。
FxCop或代码分析中的CA1822规则规定:
在[将成员标记为静态]之后,编译器将向这些成员发出非虚拟调用站点,这将防止在 运行时,确保当前对象指针为 非空。这可以导致可测量的性能增益 性能敏感的代码。在某些情况下,访问失败 当前对象实例表示正确性问题。”
实用程序类 除非在设计中有意义,否则不应该将它们移到实用程序类中。如果静态方法与特定类型有关,就像ToRadians(双度)方法与表示角度的类有关一样,那么该方法作为该类型的静态成员存在是有意义的(注意,为了演示,这是一个复杂的示例)。
如果函数在许多页面中共享,你也可以把它们放在一个基页类中,然后让所有使用该功能的asp.net页面继承它(函数也可以仍然是静态的)。
只是我的一点钱:将所有共享的静态方法添加到实用程序类中,您就可以添加
using static className;
到您的using语句,这使得代码更快地输入和更容易阅读。例如,我在继承的一些代码中有大量所谓的“全局变量”。我没有在一个属于实例类的类中创建全局变量,而是将它们全部设置为全局类的静态属性。它完成了这项工作,虽然有些混乱,但我可以按名称引用属性,因为我已经引用了静态名称空间。
我不知道这是不是一个好的练习。关于c# 4/5,我有很多东西要学,还有很多遗留代码要重构,所以我只是想让Roselyn的技巧来指导我。
Joey
您应该在给定的场景中使用最易读和最直观的方法。
除了在最极端的情况下,性能参数并不是一个好的参数,因为实际发生的唯一事情是将一个额外的参数(this)推入到实例方法的堆栈中。
推荐文章
- 如何开始开发Internet Explorer扩展?
- 更新行,如果它存在,否则插入逻辑实体框架
- 在什么情况下SqlConnection会自动被征召到环境事务范围事务中?
- 用c#解析JSON
- Windows窗体中的标签的换行
- 为什么在c#中使用finally ?
- 为什么不是字符串。空一个常数?
- 为什么我不能在c#中有抽象静态方法?
- Nuget连接尝试失败“无法为源加载服务索引”
- net HttpClient。如何POST字符串值?
- 我如何使一个方法的返回类型泛型?
- 何时处理CancellationTokenSource?
- 如何获取正在执行的程序集版本?
- AutoMapper vs valueinjector
- 为什么控制台不。Writeline,控制台。在Visual Studio Express中编写工作?