3

C# では、Object() または Object{} を使用してオブジェクトを作成できます。Object() と Object{} の違いは何ですか

public item getitem()
{

return new item()

}

public item getitem()
{

return new item {}

}
4

3 に答える 3

8

この構文:

new SomeType{}

プロパティを設定しないオブジェクト初期化式です。パラメータなしのコンストラクタを暗黙的に呼び出します。中括弧内にプロパティの割り当てを追加できます。

new SomeType { Name = "Jon" }

この構文:

new SomeType()

はパラメーターなしのコンストラクターの呼び出しであり、プロパティを設定する機会はありません。

オブジェクト初期化子を使用して、コンストラクター(パラメーター化されているかどうかに関係なく)を明示的に呼び出すこともできることに注意してください。

// Explicit parameterless constructor call
new SomeType() { Name = "Jon" }

// Call to constructor with parameters
new SomeType("Jon") { Age = 36 }

オブジェクト初期化子の詳細については、C#4仕様のセクション7.6.10.2を参照してください。

プロパティを設定しない場合はnew SomeType()、わかりやすくするために使用することを強くお勧めします。プロパティを設定せずにオブジェクト初期化子を使用するのは奇妙です。

于 2012-07-20T16:06:18.323 に答える
6

item()デフォルトのコンストラクターを呼び出しますが、デフォルトのコンストラクターを呼び出し、オブジェクト初期化子item {}を使用できるようにします(この場合は空です)。

于 2012-07-20T16:05:35.253 に答える
1

new item {}オブジェクト初期化子を使用します。あなたの例では違いはありませんが、通常new item()、オブジェクト初期化子を実際に利用したくない場合は、単に呼び出すだけです。

于 2012-07-20T16:06:27.007 に答える