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= から型 '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 を使用しています。