RRR*_*RRR 1 c# static code-analysis
我运行代码分析并收到此消息:
CA1822:Microsoft.Performance:从不使用'CreateIntervalString(TimeSpan)'中的'this'参数(或Visual Basic中的'Me').将成员标记为静态(或在Visual Basic中为Shared)或在方法体中使用"this"/"Me"或至少使用一个属性访问器(如果适用).
我的代码是:
private string CreateIntervalString(TimeSpan timeSpan)
{
return timeSpan.ToString();
}
Run Code Online (Sandbox Code Playgroud)
据我所知,因为CreateIntervalString函数不使用类的任何成员,并且只使用timeSpan输入,VisualStudio建议我将其标记为静态.
我的问题:
非常感谢!
例子:
以下方法提供错误:
private string CreateIntervalString(TimeSpan timeSpan)
{
return timeSpan.ToString();
}
Run Code Online (Sandbox Code Playgroud)
以下不是:
private DateTime ParseDateString(string dateTimeString)
{
// the years,monthe,days,hours,minutes and secondes found by the dateTimeString input
return new DateTime(years, months, days, hours, minutes, secondes);
}
Run Code Online (Sandbox Code Playgroud)
性能没有得到改善(以任何方式重要),但代码变得更加清晰.该方法不会让人觉得它使用实例,您可以在不创建类实例的情况下使用该方法.
由于您没有使用该方法中的实例,因此不会影响线程安全的状态.由于该方法仅使用发送给它的数据,因此它是线程安全的.
要么你实际上在方法中使用了一些实例成员,代码中有一些东西可能会使用某个实例成员,或者代码中有一些东西让工具认为它有.
MSDN网站http://msdn.microsoft.com/en-us/library/ms245046.aspx给出了性能方面的答案
如果该方法未标记为static,则运行时将检查当前对象(this)是否为null.在大多数情况下,几乎没有可观察到的差异,这是真的,但是如果一种被称为每秒数百万次的方法可以通过静态获得这种收益那么它就值得.
| 归档时间: |
|
| 查看次数: |
6339 次 |
| 最近记录: |