Tornar os campos de struct graváveis (IDE0064)

Propriedade Valor
ID da regra IDE0064
Título Tornar os campos de struct graváveis
Categoria CodeQuality
Subcategoria Regras de linguagem (preferências do modificador)
Linguagens aplicáveis C#

Visão geral

Essa regra detecta structs contendo um ou mais campos readonly e que também contêm uma atribuição para this fora do construtor. A regra recomenda converter os campos readonlypara que não sejam somente leitura, ou seja, graváveis. Marcar esses campos de struct como readonly poderá causar um comportamento inesperado porque o valor atribuído ao campo poderá ser alterado quando this for atribuído fora do construtor.

Opções

Essa 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 violação, adicione diretivas de pré-processador ao arquivo de origem para desabilitar e, em seguida, reabilite 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 em um arquivo, uma pasta ou um projeto, defina a severidade como none no arquivo de configuração.

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

Para desabilitar toda essa categoria de regras, defina a gravidade da categoria como none no arquivo de configuração.

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

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

Confira também