多线程和静态构造函数

时间:2014-07-07 06:24:19

标签: c#

假设我有以下课程:

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)何时执行?他们会为每个线程执行吗?是否可能发生密钥重复异常?

1 个答案:

答案 0 :(得分:3)

每当创建第一个实例时,都会访问它们。没有密钥重复的可能性。它们只会发生一次。如果在处理静态构造函数期间发生错误,则不会再次访问它。

请参阅下面的JohnSaunders评论以及此次通话的原子性。