它看起来像C#bug吗?

时间:2016-05-13 01:28:41

标签: c# struct nullable

创建一个控制台应用以重现:

struct Test
{
    public static readonly Test? Null = null;
}

class Program
{
    static void Main(string[] args)
    {
        var t = Test.Null;
    }
}

它是可编译的,但我们将在运行时具有以下内容:

  

mscorlib.dll中发生了未处理的“System.TypeLoadException”类型异常。附加信息:无法从程序集“ConsoleApplication17,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null”加载“ConsoleApplication17.Test”类型。

这种方法解决了这个问题:

struct Test
{
    public static Test? Null => null;
}

1 个答案:

答案 0 :(得分:17)

  

这是CoreCLR中已知的实现限制 - 实例和静态字段布局一起完成,导致此错误。这很难修复。

来源:Static fields should not contribute to cyclic struct layout #4049