【问题标题】:TypeInitializationError when using static field使用静态字段时出现 TypeInitializationError
【发布时间】:2016-02-16 09:09:34
【问题描述】:

也许这很简单,但我只是从 C# 开始,无法弄清楚我做错了什么。

我正在制作一个简单的乒乓球应用程序,它工作正常,但突然一段代码开始抛出这个错误。然后我把游戏的主窗体改成了一个原始窗口的窗体,但崩溃仍然存在。

Form form = new Form();

static void Main() {
  Application.Run(form); //<-- Throwing the Crash
}

下一张图片说明了一切,我非常感谢任何帮助,即使是轻微的帮助。谢谢^^

The Error thrown

【问题讨论】:

  • 您是否尝试过单步执行表单中的代码?
  • 踩是什么意思?我使用的是原始的 windows 窗体,没有任何修改。无论如何,这曾经在今天早上运行良好,但现在它崩溃了,我既没有对 windows 窗体也没有对我之前使用的窗体进行任何修改。

标签: c# visual-studio c#-4.0 error-handling


【解决方案1】:

查看错误信息。 Program 的类型初始化器是引发异常的原因。该类型初始化器发生了一些事情,包括:

new StartScreen()
new Settings()
new SettingsManager()

可能还有更多我们在屏幕截图中看不到的内容。

Program 的类型初始化程序中的某些内容失败。检查异常以获取更多信息。此外,将部分逻辑移至构造函数(静态或适当的实例)以使其更易于调试。

(或者我喜欢说,TypeInitializationException 是一种奇特的说法,“你在方法之外发生了太多事情。”)

【讨论】:

  • 非常感谢!问题出在“新设置()”中。我以前只有 settings 和 settingsManager 构造函数是静态的,我添加了其他试图修复此错误的构造函数。
【解决方案2】:

线

Form form = new Form();

在您第一次访问变量表单时执行。 在这种情况下,它在这一行:

Application.Run(form);

所以Form类的构造函数抛出了错误

【讨论】:

  • 这根本不是真的。
  • 嗯,不,这不是问题所在。我也试过在 Main 方法中声明表单字段,仍然是同样的崩溃。无论如何谢谢^.^
  • "So the constructor of the class Form threws an error" - 那么为什么错误会说它是由Program类抛出的?
  • 哦,我好像错过了其他静态变量,因为我只看表单变量,对不起
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-30
  • 1970-01-01
  • 1970-01-01
  • 2019-05-29
  • 2013-07-11
  • 2015-02-19
相关资源
最近更新 更多