为什么在struct中使用ImmutableArray类型的静态字段会导致TypeLoadException

时间:2015-09-09 18:08:52

标签: c# nunit visual-studio-2015 immutablearray

我正在尝试在结构中使用类型为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未处理
消息:mscorlib.dll中发生了未处理的“System.TypeLoadException”类型异常 附加信息:无法从程序集'Alpha,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'加载'Alpha.Program + Simple'类型。

如果我没有通过删除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 Version 1.1.37。

0 个答案:

没有答案