2016-08-31 1 views
3

은 바로 이와 같은 구조에 대해 불평하기 시작 :CA1309는 .NET 4.5.1에 ​​대해 컴파일 된 소스에 대해 여전히 유효합니까? 우리는 또한 CA1309을 활성화하고 우리의 프로젝트 중 하나에 대한 "마이크로 소프트의 모든 규칙"규칙 세트의 상위와의 FxCop을 사용하도록 설정하면

if (translationItem.Description == "Description") 

보기 경고 등 :

string here 대한 기준 소스 보면

enter image description here , 그것은 operator == 차례로 EqualsHelper 사용 String.Equals 사용하는 것을 나타낸다. CA1309가 제안한 Equals 오버로드를 호출 할 때 동일한 EqualsHelper이 호출됩니다. 따라서, == 연산자가 이미 서수 비교를 사용하고있는 것처럼 보입니다.

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

그렇다면, 왜 우리가해야 :

그래서 제 질문은 우리가이에 위의 코드 조각을 리팩토링해야한다?

P. 위의 스 니펫에서 대소 문자를 구분하는 문자열을 사용하려고합니다.

p2. 우리는 Microsoft.CodeAnalysis.FxCopAnalyzers 누젠트 패키지를 사용하여 코드 분석을 즉석에서 실행합니다.

+0

속성 (또는 필드)'.Description'이'object' 또는 일부 인터페이스 유형으로 선언 되었습니까? _Edit : _ 마찬가지로, 코드에서'=='토큰 위에 마우스를 올려 놓으면 도구 팁에'bool object.operator == (객체 왼쪽, 객체 오른쪽)'이 표시됩니까? –

+0

문자열 속성입니다. – Vincent

+0

문자열 속성이'public string Description {get; 세트; }', '=='연산자를 사용한 비교 및 ​​VS Pro 2015 업데이트 3의 "Microsoft 모든 규칙"룰 세트를 사용하면 경고 메시지가 표시되지 않습니다. 당신이 생각하는 코드 라인을 경고가 참조하고 있습니까? – cynic

답변

관련 문제