Tornar os campos de estrutura graváveis (IDE0064)
Propriedade | Valor |
---|---|
ID da Regra | IDE0064 |
Título | Tornar os campos de estrutura graváveis |
Categoria | CodeQuality |
Subcategoria | Regras de idioma (preferências de modificador) |
Idiomas aplicáveis | C# |
Descrição Geral
Esta regra deteta estruturas que contêm um ou mais readonly
campos e também contêm uma atribuição para this
fora do construtor. A regra recomenda a conversão de readonly
campos para não só de leitura, ou seja, gravável. Marcar campos de estrutura como readonly
pode levar a um comportamento inesperado, porque o valor atribuído ao campo pode ser alterado quando this
é atribuído fora do construtor.
Opções
Esta regra não tem opções de estilo de código associadas.
Exemplo
// 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);
}
}
Suprimir um aviso
Se quiser suprimir apenas uma única violação, adicione diretivas de pré-processamento ao ficheiro de origem para desativar e, em seguida, reativar a regra.
#pragma warning disable IDE0064
// The code that's violating the rule is on this line.
#pragma warning restore IDE0064
Para desativar a regra de um ficheiro, pasta ou projeto, defina a gravidade para none
no ficheiro de configuração.
[*.{cs,vb}]
dotnet_diagnostic.IDE0064.severity = none
Para desativar toda esta categoria de regras, defina a gravidade da categoria como none
no ficheiro de configuração.
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-CodeQuality.severity = none
Para obter mais informações, veja Como suprimir avisos de análise de código.