Share via


CA2244: 인덱싱된 요소 초기화를 중복하지 마세요.

속성
규칙 ID CA2244
타이틀 인덱싱된 요소의 초기화는 복제하면 안 됩니다.
범주 사용 현황
수정 사항이 주요 변경인지 여부 주요 변경 아님
.NET 8에서 기본적으로 사용 제안 사항

원인

개체 이니셜라이저에 동일한 상수 인덱스를 포함하는 두 개 이상의 인덱싱된 요소 이니셜라이저가 있습니다. 마지막 이니셜라이저 외에 모두 중복됩니다.

규칙 설명

개체 이니셜라이저를 사용하면 명시적으로 생성자를 호출한 다음 할당문 줄을 추가하지 않고도 생성 시 개체의 모든 액세스 가능한 필드나 속성에 값을 할당할 수 있습니다.

개체 이니셜라이저의 인덱싱된 요소 이니셜라이저는 고유 요소를 초기화해야 합니다. 중복된 인덱스는 이전 요소 초기화를 덮어씁니다.

위반 문제를 해결하는 방법

위반 문제를 해결하려면 이후의 요소 이니셜라이저가 덮어쓴 모든 중복 인덱싱된 요소 이니셜라이저를 제거합니다. 예를 들어 다음 코드 조각은 규칙 위반 및 몇 가지 잠재적 해결책을 보여 줍니다.

using System.Collections.Generic;

class C
{
    public void M()
    {
        var dictionary = new Dictionary<int, int>
        {
            [1] = 1, // CA2244
            [2] = 2,
            [1] = 3
        };
    }
}
using System.Collections.Generic;

class C
{
    public void M()
    {
        var dictionary = new Dictionary<int, int>
        {
            [2] = 2,
            [1] = 3
        };
    }
}
using System.Collections.Generic;

class C
{
    public void M()
    {
        var dictionary = new Dictionary<int, int>
        {
            [1] = 1,
            [2] = 2
        };
    }
}

Visual Studio에서는 이 규칙에 대한 코드 수정 사항을 사용할 수 있습니다. 이를 사용하려면 위반에 커서를 놓고 Ctrl+ 키를 누릅니다.(마침표). 표시되는 옵션 목록에서 중복 요소 이니셜라이저 제거를 선택합니다.

Code fix for CA2244 - Remove redundant element initializer

경고를 표시하지 않는 경우

이 규칙에 대한 위반을 표시해야 합니다.

참고 항목