You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#新field关键字:调用Volatile.Read(ref field)能否实现volatile属性?

C#中实现“volatile属性”的可行性探讨

传统上,C#不允许直接给属性使用volatile关键字,比如下面的写法会触发编译错误:

// CS0106: The modifier 'volatile' is not valid for this item
public volatile int SomeNumber { get; set; }

当然,你完全可以手动创建一个volatile修饰的字段作为属性的后备字段——毕竟volatile关键字只能用于字段,示例如下:

public volatile int SomeNumber;

不过C# 14即将引入的field关键字,允许我们访问自动实现属性时生成的后备字段,用法示例:

public int SomeNumber
{
    get
    {
        return field;
    }
}

这就让人产生疑问:能不能通过在读取field前调用Thread.MemoryBarrier()来实现类似volatile属性的效果?换句话说,下面的代码在功能上是否等价于volatile字段?

public int SomeNumber
{
    get
    {
        Thread.MemoryBarrier();
        return field;
    }
}

或者更简洁的写法:

public int SomeNumber => Volatile.Read(ref field);

内容的提问来源于stack exchange,提问作者user3163495

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 08:40:55