traditionell war es nicht möglich, das volatile Schlüsselwort für Eigenschaften in C# zu verwenden. Mit anderen Worten, dies war nicht möglich: < /p>
Code: Select all
// CS0106: The modifier 'volatile' is not valid for this item
public volatile int SomeNumber { get; set; }
Natürlich können Sie immer manuell ein verstecktes flüchtiges Feld erstellen, um als Backing -Feld für die Eigenschaft zu fungieren. Code> Schlüsselwort konnte nur in einem Feld verwendet werden, wie SO: < /p>
Jetzt haben wir das Feld , das sich auf C# 14 befinden sollte (siehe Vorschlag hier). Mit dem Schlüsselwort "Feld " können wir auf das Feld "Backing" zugreifen, das automatisch erstellt wird, wenn Sie eine Eigenschaft definieren. Hier ist ein Beispiel für die Verwendung: < /p>
Code: Select all
public int SomeNumber
{
get
{
return field;
}
}
Dies hat mich kürzlich über das volatile Schlüsselwort nachgedacht. Könnten wir eine volatile Eigenschaft implementieren, indem wir einen Anruf zum Thread hinzufügen. Mit anderen Worten, ist das folgende Beispiel funktional einem flüchtigen Feld äquivalent?
Code: Select all
public int SomeNumber
{
get
{
Thread.MemoryBarrier();
return field;
}
}
< /code>
oder sogar kürzer: < /p>
public int SomeNumber => Volatile.Read(ref field);