静态类中的静态属性

ama*_*eur 7 c# static

关于静态类中的静态变量的问题.

如果我有一个静态类并在其中设置一个属性的值,公开暴露,是否为该类的所有实例设置此变量的值?因此,如果线程1将property的值设置为999,那么是否也为线程2设置了值999?

Ron*_*erg 13

是的.AppDomain中只有一个静态类'字段的副本.

但是,您应该考虑同步.如果线程1设置(写入)变量并且线程2同时读取它,则可能会得到意外的结果,因为一个写操作实际上可能被分成多个处理器指令.

假设你设置了a的值long.这是64位值,写入至少包含2个处理器指令(在32位机器上).从理论上讲,可能会long在两个写指令之间调度相同变量的读取,从而导致意外行为.

  • 严格来说,静态类没有*instance*,但每个静态字段都有一个副本 (5认同)