を実行する場合、次のコードは、2.0から4.6.1までの様々な.NET Frameworkのバージョンのために、VS2013とVS2015の両方でコンパイルが、実行されたときにSystem.TypeLoadExceptionをスロー:非常に簡単なコードはコンパイルが、TypeLoadExceptionがスロー
namespace Test
{
struct Foo<T>
{
}
struct Bar<U>
{
Foo<Bar<U>> foo;
}
class Program
{
static void Main(string[] args)
{
var x = new Bar<int>();
}
}
}
しかしフーやバーのいずれかがクラスに構造体から変更された場合、それが実行されます。私はなぜこれが2つの構造体のために動作しないのか理解しようとしています。なぜこのコードは失敗しますか?
例外メッセージは、次のとおりです。
struct Foo
{
Bar bar;
}
struct Bar
{
Foo foo;
}
または
struct Foo
{
Foo foo1;
Foo foo2;
}
クラスがREFEを使用する:あなたは、ループ型と構造体
同様の問題を作成することはできません
"System.TypeLoadException occurred Message: A first chance exception of type 'System.TypeLoadException' occurred in mscorlib.dll Additional information: Could not load type 'Test.Bar`1' from assembly 'scratch, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'."
可能な重複します(http:// stackoverflowの.com/questions/13731798/generics-in-struct-vs-class) – MethodMan
TypeLoadExceptionのメッセージは何ですか? 「System.TypeLoadExceptionが メッセージが発生しました:: –
例外メッセージがあるタイプ 『System.TypeLoadException』の最初のチャンス例外ががmscorlib.dllで発生した 追加情報:アセンブリ「スクラッチから型 『Test.Bar'1』をロードできませんでした、バージョン= 1.0.0.0、Culture =ニュートラル、PublicKeyToken = null '。 " –