Udostępnij za pomocą


Tworzenie pól struktury zapisywalnych (IDE0064)

Własność Wartość
identyfikator reguły IDE0064
Tytuł Tworzenie pól struktury zapisywalnych
Kategoria Jakość kodu
podkategorii Reguły języka (preferencje modyfikatora)
Stosowane języki C#

Przegląd

Ta reguła wykrywa struktury, które zawierają co najmniej jedno readonly pola, a także zawierają przypisanie do this poza konstruktorem. Zasada zaleca konwertowanie pól readonly, aby nie były tylko do odczytu, czyli były zapisywalne. Oznaczanie takich pól struktury, jak readonly może prowadzić do nieoczekiwanego zachowania, ponieważ wartość przypisana do pola może ulec zmianie po przypisaniu this poza konstruktorem.

Opcje

Ta reguła nie ma skojarzonych opcji stylu kodu.

Przykład

// 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);
    }
}

Pomijanie ostrzeżenia

Jeśli chcesz pominąć tylko jedno naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.

#pragma warning disable IDE0064
// The code that's violating the rule is on this line.
#pragma warning restore IDE0064

Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji .

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

Aby wyłączyć tę całą kategorię reguł, ustaw ważność kategorii na none w pliku konfiguracji .

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

Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia analizy kodu.

Zobacz też