은 바로 이와 같은 구조에 대해 불평하기 시작 :CA1309는 .NET 4.5.1에 대해 컴파일 된 소스에 대해 여전히 유효합니까? 우리는 또한 CA1309을 활성화하고 우리의 프로젝트 중 하나에 대한 "마이크로 소프트의 모든 규칙"규칙 세트의 상위와의 FxCop을 사용하도록 설정하면
if (translationItem.Description == "Description")
보기 경고 등 :
string
here 대한 기준 소스 보면
, 그것은
operator ==
차례로 EqualsHelper
사용 String.Equals
사용하는 것을 나타낸다. CA1309가 제안한 Equals
오버로드를 호출 할 때 동일한 EqualsHelper
이 호출됩니다. 따라서, ==
연산자가 이미 서수 비교를 사용하고있는 것처럼 보입니다.
if (string.Equals(translationItem.Description, "Description", StringComparison.Ordinal))
그렇다면, 왜 우리가해야 :
그래서 제 질문은 우리가이에 위의 코드 조각을 리팩토링해야한다?
P. 위의 스 니펫에서 대소 문자를 구분하는 문자열을 사용하려고합니다.
p2. 우리는 Microsoft.CodeAnalysis.FxCopAnalyzers
누젠트 패키지를 사용하여 코드 분석을 즉석에서 실행합니다.
속성 (또는 필드)'.Description'이'object' 또는 일부 인터페이스 유형으로 선언 되었습니까? _Edit : _ 마찬가지로, 코드에서'=='토큰 위에 마우스를 올려 놓으면 도구 팁에'bool object.operator == (객체 왼쪽, 객체 오른쪽)'이 표시됩니까? –
문자열 속성입니다. – Vincent
문자열 속성이'public string Description {get; 세트; }', '=='연산자를 사용한 비교 및 VS Pro 2015 업데이트 3의 "Microsoft 모든 규칙"룰 세트를 사용하면 경고 메시지가 표시되지 않습니다. 당신이 생각하는 코드 라인을 경고가 참조하고 있습니까? – cynic