代码检查:对 'volatile' 字段的捕获引用不会被视为 'volatile'
通过引用传递 volatile 字段会移除被调用方法内通常的 volatile 访问保障。 这可能导致同步代码产生误导或不安全。
此检查会报告通过引用传递 volatile 字段的 ref 和 out 参数,支持的 interlocked API 等特殊情况除外。
该检查实际上与 CS0420 编译器警告相同。
示例
class Example
{
private volatile int _value;
void Update(ref int x) { }
void Test()
{
Update(ref _value);
}
}
class Example
{
private volatile int _value;
void Update(ref int x) { }
void Test()
{
var value = _value;
Update(ref value);
}
}
快速修复
快速修复会引入一个局部变量,并改为传递该变量。
2026年 5月 8日