Share via


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.

Ver também