当我们为其中一个项目启用了fxcop的“Microsoft All Rules”规则集的超集时,它还启用了CA1309并立即开始抱怨这样的结构:
if (translationItem.Description == "Description")
显示警告,例如:
在查看string
here的参考来源时,它会显示operator ==
使用String.Equals
,后者又使用EqualsHelper
。调用CA1309提出的Equals
重载时,会调用相同的EqualsHelper
。因此,似乎==
运算符已经使用了序数比较。
所以我的问题是,我们应该将上面的代码段重构为:
if (string.Equals(translationItem.Description, "Description", StringComparison.Ordinal))
如果是这样,我们为什么要这样做?
P.S。我们确实打算在上面的代码片段中使用区分大小写的字符串比较。
P.S.2。我们使用Microsoft.CodeAnalysis.FxCopAnalyzers
nuget包来即时运行代码分析。
答案 0 :(得分:2)
根据评论中的愤世嫉俗的请求an issue has been raised over at the roslyn github,答案不是很多。该问题已得到解决和关闭,修复程序将以里程碑15.3发布。