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