はtypeof(Object[][,]).Name
がObject[,][]
typeof(Object [、] [])。Nameが "Object [] [、]"と等しいのはなぜですか? <code>typeof(Object[,][]).Name</code>評価
を与え、同様Object[][,]
を与えるコンマが理由もなく動いているように思えます。
何がありますか?
はtypeof(Object[][,]).Name
がObject[,][]
typeof(Object [、] [])。Nameが "Object [] [、]"と等しいのはなぜですか? <code>typeof(Object[,][]).Name</code>評価
を与え、同様Object[][,]
を与えるコンマが理由もなく動いているように思えます。
何がありますか?
不揃いと長方形の配列を混在させることは、狂気のためのレシピです。与えられた型記法が意味することについてのあなたの直感は、ほとんどいつも間違っています、または少なくとも、私のものです。
テーマに関する私の記事を読んで、それはあなたがここで何が起こっているか理解するのに役立つかどうかを確認:
基本的にhttp://blogs.msdn.com/b/ericlippert/archive/2009/08/17/arrays-of-arrays.aspx
:C#と反射がそれぞれに、2つの異なる方法で混合ぼろぼろ/長方形配列を記譜彼ら自身の理由。
このようなエキゾチックな配列を宣言したいかもしれないという目的を除いて、リフレクションが配列の名前を生成する方法は再帰的です:最初に配列の要素型の名前を生成し、適当な数のカンマで括弧をつけてください。
Object[,][]
は、1Dアレイの2D配列です。 2D配列の要素タイプはObject[]
なので、全体的な結果は"Object[]"+"[,]"
です。ここで
は、アルゴリズムの動作方法の他の例である:それは限り:
typeof(Object[][,][,,][,,,][,,,,]).Name
は、私は、実装の効率以外のその背後にある理由が表示されていない
Object[,,,,][,,,][,,][,][]
です構文がC#と一致するかどうかは関係ありません。結局のところ、C#は.NETの世界で唯一の言語ではありません。
;ここで奇妙なのは、 'object [、] []'は 'object []'の1次元配列でなければならないと思われるとき、 'object [、] []'は 'object []' 。 –
私はカンマの位置を変更するルールを見つけましたが、なぜそれがそのように動作しているのかわかりません。コンマは配列の中心に反映されます。例えば; '' [] [] [] [] [] [] [] [] [] [] [] [ ] [、] [] '、' [] [] [] [] [] '結果として' [] [] [、] [] [] 'を返します。 –
+1。ニースの質問! – ja72
@SonerGönül:「[] [、] [,,] [,,,] [,,,,] 'を試してください。 –