我试图在结构中使用类型的静态字段,ImmutableArray<T>
其中T
是结构的类型。但是,当我尝试执行此操作时,我会TypeLoadException
在执行程序时立即获得。这似乎发生在程序本身甚至开始运行之前。没有可用的堆栈跟踪,我无法单步执行任何操作。这是一个说明问题的简单示例:
namespace Alpha
{
using System;
using System.Collections.Immutable;
internal class Program
{
private static void Main(string[] args)
{
var simple = new Simple(0);
Console.WriteLine(simple.Index);
Console.ReadLine();
}
public struct Simple
{
public static readonly ImmutableArray<Simple> Values =
ImmutableArray<Simple>.Empty;
public Simple(int index)
{
Index = index;
}
public int Index { get; }
}
}
}
这是我得到的错误代码: System.TypeLoadException was unhandled
消息:mscorlib.dll 中发生了“System.TypeLoadException”类型的未处理异常附加信息:无法从程序集“Alpha,Version=”加载类型“Alpha.Program+Simple” 1.0.0.0,文化=中性,PublicKeyToken=null'。
如果我不通过删除它来初始化该字段,ImmutableArray<Simple>.Empty
它仍然无法运行。但是,如果我将静态字段更改为以下任一项,程序运行得很好:
public static readonly ImmutableList<Simple> Values = ImmutableList<Simple>.Empty;
public static readonly Simple[] Values = new Simple[0];
我正在使用 Visual Studio Community 2015 和 System.Collections.Immutable 版本 1.1.37。