2016-08-31 15 views
3

Когда мы включили FxCop с надмножеством «Microsoft Все правила» набора правил для одного из наших проектов также позволило CA1309 и сразу же начал жаловаться конструкций, таких, как это:Действительно ли CA1309 действителен для источника, скомпилированного с .NET 4.5.1?

if (translationItem.Description == "Description") 

Отображение предупреждений, таких как:

enter image description here при взгляде на опорный источник для stringhere, это показывает, что operator == использует String.Equals, который в свою очередь использует EqualsHelper. При вызове перегрузки Equals, предложенной CA1309, вызывается то же самое EqualsHelper. Следовательно, похоже, что оператор == уже использует сравнение ординалов.

Так что мой вопрос, мы должны реорганизовать фрагмент кода выше в этом:

if (string.Equals(translationItem.Description, "Description", StringComparison.Ordinal)) 

И если да, то почему мы должны?

P.S. Мы действительно намереваемся использовать сравнение строк с учетом регистра в приведенных выше фрагментах.

P.S.2. Мы используем пакет nuget Microsoft.CodeAnalysis.FxCopAnalyzers для оперативного анализа кода.

+0

Является ли свойство (или поле) '.Description' объявленным как' object' или какой-либо тип интерфейса? _Edit: _ Эквивалентно, когда вы наводите мышь на токен '==' в вашем коде, появляется подсказка на инструменте 'bool object.operator == (объект слева, правый объект)'? –

+0

Это свойство строки – Vincent

+0

Со значением свойства string, объявленным как 'public string Описание {get; задавать; } ', сравнение с использованием оператора' == 'и набора правил Microsoft All Rules в VS Pro 2015 Update 3, я не получаю предупреждение. Вы уверены, что предупреждение относится к строке кода, который, по вашему мнению, он делает? – cynic

ответ

 Смежные вопросы

  • Нет связанных вопросов^_^