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 は処理さ
れませんでした メッセージ: 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