var a = new bool[]{true,false};
var b = new bool[4];
a=b; //operation 1
a[1]=true; //operation 2
Run Code Online (Sandbox Code Playgroud)
我知道在C#中定义了一些atmoic类型,从那里我找不到数组.
操作1是原子的。操作2不是。从规格:
5.5变量引用的原子性
下列数据类型的读写是原子的:bool,char,byte,sbyte,short,ushort,uint,int,float和引用类型。此外,上一个列表中具有基础类型的枚举类型的读取和写入也是原子的。不保证其他类型的读取和写入(包括long,ulong,double和decimal)以及用户定义的类型都是原子的。
数组是引用类型。变量a和b是引用,因此操作1是引用赋值:对引用变量的简单写入,因此也包含在内。操作2 看起来像是对的简单写入bool,也将包括在内,但是不要忘记数组中的索引查找。数组写入本身是原子的,但是当您包含查找(dereferencing a[1])时,涉及两个单独的操作。
| 归档时间: |
|
| 查看次数: |
275 次 |
| 最近记录: |