Поделиться через


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+ (период). Выберите Удалить избыточный инициализатор элемента из списка.

Исправление кода для CA2244 — удаление избыточного инициализатора элемента

Когда лучше отключить предупреждения

Не отключайте предупреждения для этого правила.

См. также