Сделайте поля структуры доступными для записи (IDE0064)

Свойство Значение
Идентификатор правила IDE0064
Title Сделайте поля структуры доступными для записи
Категория Качество кода
Подкатегория Правила языка (настройки модификаторов)
Применимые языки C#

Обзор

Это правило обнаруживает структуры, которые содержат одно или несколько полей readonly и назначение для this за пределами конструктора. Правило рекомендует преобразовывать readonly поля в нечитаемые, то есть доступные для записи. Пометка таких полей структуры как readonly может привести к непредвиденному поведению, так как значение, присваиваемое полю, может измениться, когда this назначается за пределами конструктора.

Варианты

Это правило не имеет связанных параметров стиля кода.

Пример

// Code with violations
struct MyStruct
{
    public readonly int Value;

    public MyStruct(int value)
    {
        Value = value;
    }

    public void Test()
    {
        this = new MyStruct(5);
    }
}

// Fixed code
struct MyStruct
{
    public int Value;

    public MyStruct(int value)
    {
        Value = value;
    }

    public void Test()
    {
        this = new MyStruct(5);
    }
}

Отключение предупреждений

Если вы хотите подавить только одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и снова включить правило.

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

Чтобы отключить правило для файла, папки или проекта, задайте для его серьезности none значение в файле конфигурации.

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

Чтобы отключить всю эту категорию правил, задайте для категории none значение серьезности в файле конфигурации.

[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-CodeQuality.severity = none

Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.

См. также раздел