CA2244: не повторяйте инициализации индексированного элемента
Свойство | Значение |
---|---|
Идентификатор правила | 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+ (период). Выберите Удалить избыточный инициализатор элемента из списка.
Когда лучше отключить предупреждения
Не отключайте предупреждения для этого правила.