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


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

Свойство Ценность
идентификатор правила IDE0064
Заголовок Создание записываемых полей структуры
категория CodeQuality
подкатегория Языковые правила (настройки модификатора)
применимые языки 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

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

См. также