3

我试图在结构中使用类型的静态字段,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。

4

0 回答 0