Новое «Поле» C#«Ключевое слово»: «Волатильные» свойства теперь возможны, вызывая «volatile.read (reffie field)»?C#

Место общения программистов C#
Anonymous
 Новое «Поле» C#«Ключевое слово»: «Волатильные» свойства теперь возможны, вызывая «volatile.read (reffie field)»?

Сообщение Anonymous »

Традиционно, использование изменчивого ключевого слова на свойствах в 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

Вернуться в «C#»