다음을 통해 공유


CA1043: 인덱서에 정수 또는 문자열 인수를 사용하십시오.

속성
규칙 ID CA1043
타이틀 인덱서에 정수 또는 문자열 인수를 사용하세요.
범주 디자인
수정 사항이 주요 변경인지 여부 주요 변경
.NET 8에서 기본적으로 사용 아니요

원인

System.Int32, System.Int64, System.Object 또는 System.String 이외의 인덱스 유형을 사용하는 인덱서가 형식에 포함되어 있습니다.

기본적으로 이 규칙은 외부에 표시되는 형식만 확인하지만 이는 구성 가능합니다.

규칙 설명

인덱서, 즉 인덱싱된 속성은 인덱스에 정수 형식이나 문자열 형식을 사용해야 합니다. 해당 형식은 대개 데이터 구조를 인덱싱하는 데 사용되며 라이브러리의 유용성을 증가시킵니다. Object 형식은 디자인 타임에 특정 정수 형식이나 문자열 형식을 지정할 수 없는 경우에만 제한적으로 사용해야 합니다. 디자인에서 인덱스에 다른 형식이 필요한 경우 형식이 논리적 데이터 저장소를 나타내는지를 다시 고려해야 합니다. 논리적 데이터 저장소를 나타내지 않는 경우에는 메서드를 사용합니다.

위반 문제를 해결하는 방법

해당 규칙 위반 문제를 해결하려면 인덱스를 정수 형식 또는 문자열 형식으로 변경하거나 인덱서 대신 메서드를 사용합니다.

경고를 표시하지 않는 경우

반드시 비표준 인덱서에 대한 필요성을 신중하게 고려한 후에 해당 규칙에서 경고를 표시하지 않습니다.

경고 표시 안 함

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

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

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

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

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

분석할 코드 구성

다음 옵션을 사용하여 이 규칙이 실행될 코드베이스 부분을 구성합니다.

이 규칙, 적용되는 모든 규칙 또는 적용되는 이 범주(디자인)의 모든 규칙에 대해 이 옵션을 구성할 수 있습니다. 자세한 내용은 코드 품질 규칙 구성 옵션을 참조하세요.

특정 API 화면 포함

접근성을 기반으로 이 규칙을 실행할 코드베이스의 파트를 구성할 수 있습니다. 예를 들어 규칙이 퍼블릭이 아닌 API 표면에서만 실행되도록 지정하려면 프로젝트의 .editorconfig 파일에 다음 키-값 쌍을 추가합니다.

dotnet_code_quality.CAXXXX.api_surface = private, internal

예시

다음 예제에서는 Int32 인덱스를 사용하는 인덱서를 보여 줍니다.

string[] Month = new string[] { "Jan", "Feb", "..." };

public string this[int index]
{
    get => Month[index];
}
Private month() As String = {"Jan", "Feb", "..."}

Default ReadOnly Property Item(index As Integer) As String
    Get
        Return month(index)
    End Get
End Property