Activator などにオブジェクトの任意の配列を渡すときに、次の表記法が見られることがあります。
new [] {5, "Five"}
また、オブジェクトの名前付き辞書が必要な場合もありますが、次のように表示されます。
new {Numeric = 5, Textual = "Five"}
配列を作成するこの 2 番目の式は正確には何ですか?
Activator などにオブジェクトの任意の配列を渡すときに、次の表記法が見られることがあります。
new [] {5, "Five"}
また、オブジェクトの名前付き辞書が必要な場合もありますが、次のように表示されます。
new {Numeric = 5, Textual = "Five"}
配列を作成するこの 2 番目の式は正確には何ですか?
最初のコードは、オブジェクトの配列を生成します。
実際には、2 番目のコードはコンパイルされません。つまりnew [] { new { Numeric = 5, Textual = "Five"} }
、匿名型の配列ですが、明確にする必要があります。
2 番目の宣言は匿名型のように見えますが、コンパイルされません。次のように作成できる匿名オブジェクトの配列が必要なようです。
var anonArray = new[] { new { Numeric = 5, Textual = "Five" },
new { Numeric = 6, Textual = "Six" }};
匿名型は、最初に型を明示的に定義しなくても、一連の読み取り専用プロパティを 1 つのオブジェクトにカプセル化する便利な方法を提供します。型名はコンパイラによって生成され、ソース コード レベルでは使用できません。各プロパティの型は、コンパイラによって推測されます。
最初の例は、型の配列を作成し、object
その中に整数と文字列を入れています。
2 番目の例では、匿名型の (サイズが 1 の) 配列を作成しています。(配列 ( new []
) に型が指定されていない場合、配列の初期化ですべての要素に共通する最も派生した型に基づいて、使用する必要がある型を推測しようとします。)は、2 つのプロパティをnew {Numeric = 5, Textual = "Five"}
持つ新しい匿名型を作成しています。 Numeric
type int
(型は割り当てられたものに基づいて推測されます) で、値は5
、プロパティTextual
は typestring
と value"Five"
です。