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