当我们为我们的一个项目启用带有“Microsoft All Rules”规则集的超集的 fxcop 时,它也会启用 CA1309 并立即开始提示这样的构造:
if (translationItem.Description == "Description")
显示警告,例如:
查看 string
的引用源时 here ,它表明 operator ==
使用 String.Equals
,而 String.Equals
又使用 EqualsHelper
。当调用 CA1309 提出的 Equals
重载时,会调用相同的 EqualsHelper
。因此,==
运算符似乎已经使用了 Ordinal 比较。
所以我的问题是,我们是否应该将上面的代码片段重构为:
if (string.Equals(translationItem.Description, "Description", StringComparison.Ordinal))
如果是这样,我们为什么要这么做?
附言我们确实打算在上述代码段中使用区分大小写的字符串比较。
附注 2。我们使用 Microsoft.CodeAnalysis.FxCopAnalyzers
nuget 包来即时运行代码分析。
最佳答案
答案不多,但根据评论中愤世嫉俗者的要求,an issue has been raised over at the roslyn github .该问题已解决并关闭,修复程序将与里程碑 15.3 一起发布.
关于c# - CA1309 是否仍然对针对 .NET 4.5.1 编译的源代码有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39246924/