CA2244: 인덱싱된 요소 초기화를 중복하지 마세요.
속성 | 값 |
---|---|
규칙 ID | CA2244 |
제목 | 인덱싱된 요소의 초기화는 복제하면 안 됩니다. |
범주 | 사용 현황 |
수정 사항이 주요 변경인지 여부 | 주요 변경 아님 |
.NET 9에서 기본적으로 사용 | 제안 사항 |
원인
개체 이니셜라이저에 동일한 상수 인덱스를 포함하는 두 개 이상의 인덱싱된 요소 이니셜라이저가 있습니다. 마지막 이니셜라이저 외에 모두 중복됩니다.
규칙 설명
개체 이니셜라이저를 사용하면 명시적으로 생성자를 호출한 다음 할당문 줄을 추가하지 않고도 생성 시 개체의 모든 액세스 가능한 필드나 속성에 값을 할당할 수 있습니다.
개체 이니셜라이저의 인덱싱된 요소 이니셜라이저는 고유 요소를 초기화해야 합니다. 중복된 인덱스는 이전 요소 초기화를 덮어씁니다.
위반 문제를 해결하는 방법
위반 문제를 해결하려면 이후의 요소 이니셜라이저가 덮어쓴 모든 중복 인덱싱된 요소 이니셜라이저를 제거합니다. 예를 들어 다음 코드 조각은 규칙 위반 및 몇 가지 잠재적 해결책을 보여 줍니다.
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+ 키를 누릅니다.(마침표). 표시되는 옵션 목록에서 중복 요소 이니셜라이저 제거를 선택합니다.
경고를 표시하지 않는 경우
이 규칙에 대한 위반을 표시해야 합니다.
참고 항목
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET