20

最近、次のような構文を使用する C# の例に出くわしました。

var result = new { prop1 = "hello", prop2 = "world", prop3 = "." };

私は本当にそれが好き。JSONのように見えます。ただし、この構文が何と呼ばれているかはわかりません。そのため、それについて詳しく知る方法がわかりません。結果内でオブジェクトの配列を定義する方法を理解しようとすることに本当に興味があります。たとえば、prop3 の項目の配列を返したい場合はどうすればよいでしょうか? それはどのように見えるでしょうか?この構文は何と呼ばれますか?

4

5 に答える 5

25

これは、C#では匿名型と呼ばれます。

配列を返すには、単純にインライン化できます。

var result = new { prop1 = "hello", prop2 = "world", prop3 = new int[] {1,2,3} };

または、事前に宣言して使用します。

int[] array = new int[] {1,2,3};
var result = new { prop1 = "hello", prop2 = "world", prop3 = array};
于 2013-03-15T14:50:52.560 に答える
5

これは匿名型と呼ばれます。prop3 でオブジェクトの配列を返すには、次のように記述します

var result = new { prop1 = "hello", prop2 = "world", prop3 = new[] { "h", "e", "l", "l", "o" } };

私は文字列を使用していますが、どのタイプのオブジェクトでも同じです:

var result = new { prop1 = "hello", prop2 = "world", prop3 = new[] { new YourType(), new YourType(), new YourType() } };

配列の宣言では、配列内のオブジェクトの型は必要ないことに注意してください。あなたは書く必要はありませnew YourType[]ん、コンパイラはそれを必要としません、そしてIMOは単に使う方がきれいですnew[]

于 2013-03-15T14:51:45.770 に答える
3

ここにいくつかの新しい機能があります:

  1. オブジェクト初期化子-最初に構築せずにオブジェクトのプロパティを設定できます。

  2. 暗黙的に型指定された変数- キーワードを使用するとvar、コンパイラはオブジェクトの型を判断できます。

これらの機能を組み合わせて、匿名型を形成できます。コンパイル時に型を宣言または構築する必要がないため、このオブジェクトを宣言することができ、コンパイラは適切な型を作成し、IL で構築します。

于 2013-03-15T14:58:20.530 に答える
2

次のコードは、オブジェクト初期化子を使用した匿名型の例です

var result = new { prop1 = "hello", prop2 = "world", prop3 = "." };

詳細については、匿名型 (C# プログラミング ガイド)およびオブジェクトとコレクションの初期化子 (C# プログラミング ガイド)を参照してください。

于 2013-03-15T14:51:53.370 に答える
2

これらは、オブジェクトとコレクションの初期化子です。http://msdn.microsoft.com/en-us/library/vstudio/bb384062.aspxを参照してください。

于 2013-03-15T14:50:51.450 に答える