这让我很难过.我试图为Noda Time优化一些测试,我们在那里进行了一些类型的初始化程序检查.在将所有内容加载到新内容之前,我想我会发现一个类型是否具有类型初始化程序(静态构造函数或带有初始化程序的静态变量)AppDomain.令我惊讶的是,NullReferenceException尽管我的代码中没有空值,但对此进行了一次小测试.它只有当没有调试信息编译抛出异常.
这是一个简短但完整的程序来演示问题:
using System;
class Test
{
static Test() {}
static void Main()
{
var cctor = typeof(Test).TypeInitializer;
Console.WriteLine("Got initializer? {0}", cctor != null);
}
}
Run Code Online (Sandbox Code Playgroud)
以及编译和输出的记录:
c:\Users\Jon\Test>csc Test.cs
Microsoft (R) Visual C# Compiler version 4.0.30319.17626
for Microsoft (R) .NET Framework 4.5
Copyright (C) Microsoft Corporation. All rights reserved.
c:\Users\Jon\Test>test
Unhandled Exception: System.NullReferenceException: Object reference not set to
an instance of an object.
at System.RuntimeType.GetConstructorImpl(BindingFlags bindingAttr, Binder bin
der, …Run Code Online (Sandbox Code Playgroud) .net reflection typeinitializer nullreferenceexception .net-4.5