Традиционно, использование изменчивого ключевого слова на свойствах в C# было невозможно. Другими словами, это было невозможно: < /p>
// CS0106: The modifier 'volatile' is not valid for this item
public volatile int SomeNumber { get; set; }
Конечно, вы всегда можете вручную создать скрытое летучие поле, чтобы выступать в качестве поля поддержки для свойства.
Независимо Код> Ключевое слово может использоваться только в поле, например, так: < /p>
public volatile int SomeNumber;
Однако теперь у нас есть ключевое слово Field , которое должно пройти в C# 14 (см. Предложение здесь). Ключевое слово Field позволяет нам получить доступ к полю поддержки, которое автоматически создается при определении свойства. Вот пример его использования: < /p>
public int SomeNumber
{
get
{
return field;
}
}
Это заставило меня недавно задуматься о том, как storatile ключевое слово. Можем ли мы реализовать свойства изменчивого , добавив вызов в Thread.memoryBarrier () перед чтением значения Field ? Другими словами, является ли следующий пример функционально эквивалентным полю изменчивого ?
public int SomeNumber
{
get
{
Thread.MemoryBarrier();
return field;
}
}
< /code>
или даже короче: < /p>
public int SomeNumber => Volatile.Read(ref field);
Подробнее здесь: https://stackoverflow.com/questions/794 ... alling-vol