我运行代码分析并收到此消息:
CA1822:Microsoft.Performance:'this'参数(或'Me'in 从不使用'CreateIntervalString(TimeSpan)'的Visual Basic)。标记 成员为静态(或在Visual Basic中共享)或使用'this'/'Me' 方法体或至少一个属性访问者(如果适用)。
我的代码是:
private string CreateIntervalString(TimeSpan timeSpan)
{
return timeSpan.ToString();
}
据我所知,因为CreateIntervalString
函数不使用该类的任何成员,并且仅在timeSpan输入上使用,所以VisualStudio建议我将其标记为静态。
我的问题:
非常感谢!
示例:
以下方法提供错误:
private string CreateIntervalString(TimeSpan timeSpan)
{
return timeSpan.ToString();
}
以下不是:
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);
}
答案 0 :(得分:6)
性能没有得到改善(无论如何重要),但代码变得更加清晰。该方法不会让人觉得它使用了实例,您可以在不创建类实例的情况下使用该方法。
由于您未使用该方法中的实例,因此不会影响线程安全的状态。由于该方法仅使用发送给它的数据,因此它是线程安全的。
要么在方法中实际使用某个实例成员,代码中有一些东西可能会使用某个实例成员,或者代码中有一些东西让该工具认为它有。
答案 1 :(得分:5)
MSDN网站http://msdn.microsoft.com/en-us/library/ms245046.aspx提供了性能方面的答案
如果方法未标记为static,则运行时将检查当前对象(this)是否为null。在大多数情况下,几乎没有可观察到的差异,这是真的,但如果一种被称为每秒数百万次的方法可以通过静态获得这种收益,那么它就值得。
答案 2 :(得分:1)
this
参数),所以理论上它们更有效。答案 3 :(得分:0)
希望有所帮助, 约翰