C# 4.0 引用初始化变量时的TypeInitializationException/ArgumentException

C# 4.0 引用初始化变量时的TypeInitializationException/ArgumentException,c#-4.0,argumentexception,C# 4.0,Argumentexception,我只是在尝试引用另一个类中的静态变量时收到一个异常,该类也是静态初始化的。这以前奏效,但由于某种原因,现在失败了。我所做的唯一更改是将VisualStudio(2010)重置为默认设置,我无法想象这是为什么。我添加的任何其他代码也没有触及任何受影响的部分 这是我的密码 WinForms类“MainForm”: partial class MainForm : Form { // ... private RefClass convMan; private Dictio

我只是在尝试引用另一个类中的静态变量时收到一个异常,该类也是静态初始化的。这以前奏效,但由于某种原因,现在失败了。我所做的唯一更改是将VisualStudio(2010)重置为默认设置,我无法想象这是为什么。我添加的任何其他代码也没有触及任何受影响的部分

这是我的密码


WinForms类“MainForm”:

partial class MainForm : Form
{ 
    // ...

    private RefClass convMan;
    private Dictionary<EnumType, string> LogNames = RefClass.LogNames;

    // ...

   public MainForm() { .... }
}
哪个有内部异常

System.ArgumentException
因此,就我而言,我的静态字典应该在被访问后初始化,因此当我的表单类引用它时。我试着调试静态字典,看看它是否在表单类中被引用之前就被初始化了,事实并非如此。另外,当我在引用行的断点处停止时,变量LogNames为null


我真的很困惑为什么会发生这种情况,以前都是这样。

我发现了我的错误,但我得到的例外情况很容易引起误解。这是一个与我引用的词典不同的问题。它一开始可能没有被初始化,因为之前的一些东西失败了(如果有人可以清除这个,请随意这样做!)。基本上,我做错的是使用双向字典,并添加两次值。这通常会产生一个正常的异常,但因为它是静态完成的,所以它被包装成一个TypeInitializationException。我更深入地研究了内部异常的确切堆栈跟踪,并找到了异常的来源。也许这对将来的人有帮助…

我遇到了一个类似的问题,得到了同样的异常。发现我的实用程序类的静态构造函数正在生成异常。由于对异常的描述具有误导性,因此查找花费了一些时间


正如@Yeehaw提到的,异常似乎被包装了,所以这里我要说的共同点是类/对象是静态的

我找到了解决方案,当stackoverflow允许我这么做时,我会自己回答。谢谢大家!我已经编辑了你的标题。请参阅“”,其中的共识是“不,他们不应该”。
An unhandled exception of type "System.TypeInitializationException" occurred.

Additional information: The type initializer for "RefClass" threw an exception.
System.ArgumentException