Freigeben über


Strukturfelder schreibbar machen (IDE0064)

Eigentum Wert
Regel-ID IDE0064
Titel Strukturfelder schreibbar machen
Kategorie CodeQuality
Unterkategorie Sprachregeln (Modifiziererpräferenzen)
Anwendbare Sprachen C#

Überblick

Diese Regel erkennt Strukturen, die mindestens ein readonly Feld enthalten und auch eine Zuordnung zu this außerhalb des Konstruktors vornehmen. Die Regel empfiehlt, readonly-Felder in beschreibbare Felder umzuwandeln. Das Markieren solcher Strukturfelder als readonly kann zu unerwartetem Verhalten führen, da sich der dem Feld zugewiesene Wert ändern kann, wenn this außerhalb des Konstruktors zugewiesen wird.

Optionen

Diese Regel enthält keine zugehörigen Codeformatoptionen.

Beispiel

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

Unterdrücken einer Warnung

Wenn Sie nur einen einzelnen Verstoß unterdrücken möchten, fügen Sie Ihrer Quelldatei Präprozessordirektiven hinzu, um die Regel zu deaktivieren und dann erneut zu aktivieren.

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

Um die Regel für eine Datei, einen Ordner oder ein Projekt zu deaktivieren, legen Sie den Schweregrad in der Konfigurationsdateiauf none fest.

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

Um diese gesamte Regelkategorie zu deaktivieren, legen Sie den Schweregrad für die Kategorie auf none in der Konfigurationsdateifest.

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

Weitere Informationen finden Sie unter So unterdrücken Sie Codeanalysewarnungen.

Siehe auch