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


Сделайте поля структуры доступными для записи (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

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

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