2011-01-03 10 views
1

は、C#で、次の些細な匿名型を守っC#の匿名型で生成される奇妙なプロパティの種類は何ですか?

new { X = 5 }; 

(オブジェクトメソッドのオーバーライドを省略)リフレクターに見られるように、それぞれのコンパイラ生成されたコードは次のとおりです。

[CompilerGenerated] 
internal sealed class <>f__AnonymousType0<<X>j__TPar> 
{ 
    // Fields 
    [DebuggerBrowsable(DebuggerBrowsableState.Never)] 
    private readonly <X>j__TPar <X>i__Field; 

    // Methods 
    [DebuggerHidden] 
    public <>f__AnonymousType0(<X>j__TPar X) 
    { 
     this.<X>i__Field = X; 
    } 

    // Properties 
    public <X>j__TPar X 
    { 
     get 
     { 
      return this.<X>i__Field; 
     } 
    } 
} 

私の質問は、地球上で(何をWOEです)は<X>j__TParですか?タイプはリフレクターにはどこにも反映されていません。

+8

[OK]を参照してください:[なぜ匿名型が一般的なのですか?](http://blogs.msdn.com/b/ericlippert/archive/2010/12/20/why-are-anonymous-types-generic.aspx) by Eric Lippert –

+2

名前には角括弧も含まれているので、C#コードからは絶対に呼び出すことはできません(角括弧はC#の名前では無効ですが、ILでは使用できません)。 http://csharpindepth.com/Articles/General/BluffersGuide3.aspx –

+0

@Henk:素晴らしいリンクを参照してください。これを答えとして追加するとアップアップします。 :) –

答えて

2

<X>j__TParは、タイプ定義<>f__AnonymousType0で使用される総称引数の名前です。実際にTより少し読みにくいですが、別の名前と決して衝突しないことが保証されています。

+0

愚かな私は、それが一般的な議論であることを忘れてしまった。 – mark

関連する問題