快速提问...假设我有一个包含单个引用成员的C#结构。在.NET中,这个结构的赋值是原子的吗?例如:
struct ReadOnlyList<T>
{
private List<T> list;
// other random functionality
};
我知道简单的旧引用赋值是原子的,只是好奇如果将整个事物包装在一个结构中会有所不同......
由于
答案 0 :(得分:7)
12.5变量引用的原子性
以下数据类型的读写应为原子:bool,char,byte,sbyte,short,ushort,uint,int,float和reference类型。此外,在先前列表中具有基础类型的枚举类型的读取和写入也应该是原子的。其他类型的读写,包括long,ulong,double和decimal,以及用户定义的类型,不一定是原子的。除了为此目的而设计的库函数之外,不保证原子读 - 修改 - 写,例如在递增或递减的情况下。
因此,使用唯一引用类型成员分配结构的原子性是实现定义的,您不应该依赖它。