假设我有以下课程:
class Dummy
{
public static Dictionary<int, int> dict = new Dictionary<int, int>(); // (1)
static Dummy() // (2)
{
dict.Add(1, 100);
dict.Add(2, 200);
}
}
此类型将由多个线程访问。 (1)和(2)何时执行?他们会为每个线程执行吗?是否可能发生密钥重复异常?
答案 0 :(得分:3)
每当创建第一个实例时,都会访问它们。没有密钥重复的可能性。它们只会发生一次。如果在处理静态构造函数期间发生错误,则不会再次访问它。
请参阅下面的JohnSaunders评论以及此次通话的原子性。