私たちは私たちのプロジェクトの一つは、「マイクロソフトすべてのルール」ルールセットのスーパーセットでFxCopのを有効にすると、それはまた、CA1309を有効にし、すぐにこのような構造不満開始:CA1309は.NET 4.5.1に対してコンパイルされたソースに対して有効ですか?
次のような警告を表示if (translationItem.Description == "Description")
string
hereに対する基準ソースを見ると、それはoperator ==
が順番にEqualsHelper
を使用String.Equals
を使用していることを示しています。 CA1309が提案したEquals
のオーバーロードを呼び出す場合、同じEqualsHelper
が呼び出されます。したがって、==
演算子はすでに序数比較を使用しているようです。
私たちは、このに上記のスニペットをリファクタリングする必要がありますので、私の質問は、次のとおりです。
if (string.Equals(translationItem.Description, "Description", StringComparison.Ordinal))
もしそうなら、なぜ我々べきでしょうか?
P.S.上記のスニペットで大文字と小文字を区別する文字列を使用するつもりです。
P.S.2。私たちはMicrosoft.CodeAnalysis.FxCopAnalyzers
ナゲットパッケージを使用して、オンザフライでコード解析を実行します。
プロパティ(またはフィールド) '.Description'は' object'または何らかのインターフェイスタイプとして宣言されていますか? _Edit:_同様に、コード中の '=='トークンの上にマウスを置くと、ツールチップに 'bool object.operator ==(オブジェクト左、オブジェクト右)'と表示されますか? –
これは文字列プロパティです – Vincent
文字列プロパティが 'public string Description {get;セット; } '、' == '演算子とVS Pro 2015 Update 3の「Microsoft All Rules」ルールセットを使った比較では警告が出ません。警告が、あなたがそれと思われるコード行を参照していると確信していますか? – cynic