CA1309: 서수 StringComparison을 사용하십시오.

속성
규칙 ID CA1309
타이틀 서수 StringComparison을 사용하세요.
범주 전역화
수정 사항이 주요 변경인지 여부 주요 변경 아님
.NET 8에서 기본적으로 사용 아니요

원인

비언어적 문자열 비교 작업에서 StringComparison 매개 변수를 Ordinal 또는 OrdinalIgnoreCase로 설정하지 않습니다.

규칙 설명

많은 문자열 작업(System.String.CompareSystem.String.Equals 메서드가 가장 중요)에서 System.StringComparison 열거형 값을 매개 변수로 허용하는 오버로드를 제공합니다.

StringComparison.Ordinal 또는 StringComparison.OrdinalIgnoreCase를 지정하면 문자열 비교가 비언어적입니다. 즉, 비교 결정을 내릴 때 자연어 관련 기능이 무시됩니다. 자연어 기능 무시는 문화권으로 매개 변수화되는 대/소문자나 동등 테이블이 아닌 단순 바이트 비교를 기준으로 결정을 내린다는 의미입니다. 따라서 매개 변수를 StringComparison.Ordinal 또는 StringComparison.OrdinalIgnoreCase로 명시적으로 설정하면 코드의 속도가 빨라지고 정확성 및 신뢰도가 향상됩니다.

위반 문제를 해결하는 방법

이 규칙의 위반 문제를 해결하려면 System.StringComparison 열거형을 매개 변수로 허용하는 오버로드로 문자열 비교 메서드를 변경하고 Ordinal 또는 OrdinalIgnoreCase를 지정합니다. 예를 들어 String.Compare(str1, str2)String.Compare(str1, str2, StringComparison.Ordinal)로 변경합니다.

경고를 표시하지 않는 경우

라이브러리나 애플리케이션이 제한된 로컬 대상 그룹을 위한 것인 경우 또는 현재 문화권의 의미 체계를 사용해야 하는 경우 이 규칙의 경고를 표시하지 않아도 됩니다.

경고 표시 안 함

단일 위반만 표시하지 않으려면 원본 파일에 전처리기 지시문을 추가하여 규칙을 사용하지 않도록 설정한 후 다시 사용하도록 설정합니다.

#pragma warning disable CA1309
// The code that's violating the rule is on this line.
#pragma warning restore CA1309

파일, 폴더 또는 프로젝트에 대한 규칙을 사용하지 않도록 설정하려면 구성 파일에서 심각도를 none으로 설정합니다.

[*.{cs,vb}]
dotnet_diagnostic.CA1309.severity = none

자세한 내용은 방법: 코드 분석 경고 표시 안 함을 참조하세요.

참고 항목