Partilhar via


Tornar os campos da estrutura graváveis (IDE0064)

Propriedade Valor
ID da regra IDE0064
Título Tornar os campos struct graváveis
Categoria CódigoQualidade
Subcategoria Regras de idioma (preferências modificadoras)
Idiomas aplicáveis C#

Visão geral

Esta regra deteta structs que contêm um ou mais campos readonly e também contêm uma atribuição para this fora do construtor. A regra recomenda converter readonly campos para somente não leitura, ou seja, graváveis. Marcar esses campos struct como readonly pode levar a um comportamento inesperado, porque o valor atribuído ao campo pode mudar 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 você quiser suprimir apenas uma única violação, adicione diretivas de pré-processador ao arquivo 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 desabilitar a regra para um arquivo, pasta ou projeto, defina sua gravidade como none no arquivo de configuração .

[*.{cs,vb}]
dotnet_diagnostic.IDE0064.severity = none

Para desativar toda essa categoria de regras, defina a severidade da categoria para none no arquivo de configuração .

[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-CodeQuality.severity = none

Para obter mais informações, consulte Como suprimir avisos de análise de código.

Ver também