引用大小结构的原子赋值
本文关键字:赋值 结构 引用 | 更新日期: 2023-09-27 18:05:10
快速提问…假设我有一个c#结构体,它包含一个引用成员。这个结构的赋值在。net中是原子的吗?例如:
struct ReadOnlyList<T>
{
private List<T> list;
// other random functionality
};
我知道普通的旧引用赋值是原子的,只是好奇是否将整个东西包装在一个结构体中会有什么不同…
谢谢
12.5变量引用原子性
下列数据类型的读写必须是原子类型:bool、char、byte、sbyte、short、ushort、uint、int、float和引用类型。此外,具有前面列表中基础类型的枚举类型的读写也必须是原子的。其他类型(包括long、ulong、double和decimal)以及用户定义类型的读写不必是原子类型。除了为此目的而设计的库函数外,不保证原子读-修改-写,例如在自增或自减的情况下。
因此,只有引用类型成员的结构的赋值原子性是实现定义的,不应该依赖于它。