1

コンパイラは、「AnonymousType」が含まれるように常に匿名型に名前を付けているようです。

new { Name = "Sean"}.GetType().Name // Gives: <>f__AnonymousType0`1

これは信頼できますか?

4

3 に答える 3

3

いいえ、それに頼ることはできません。C# の仕様では、コンパイラによって生成された型の名前が指定されていません。そのため、コンパイラの将来のバージョン (または mono などの代替実装) では、異なる命名スキームが選択される可能性があります。

于 2012-05-23T16:28:25.837 に答える
2

C# 4.0 仕様で匿名型の型名について言及されているのは、7.6.10.6 だけです。

匿名型の名前はコンパイラによって自動的に生成され、プログラム テキストで参照することはできません。

つまり、保証は与えられておらず、暗示されておらず、コンパイラは自由に任意の名前を生成できます。

于 2012-05-23T16:33:59.127 に答える
2

現在の C# コンパイラには、実際に、IL で生成される名前の一部として AnonymousType という名前が含まれます。

ただし、これは厳密には実装の詳細です。言語によって指定されていないか、言語の将来のバージョンで真であることが保証されていません

于 2012-05-23T16:29:07.477 に答える