3

引数を渡してインスタンス化するときにコンストラクターを使用することの違いは何ですか:

Customer Costomer1 = new Customer(100, Mark, 5000);

そして、同じことをしますが、コンストラクターに何も渡さずに、単にメンバーをインスタンス化しますか?

Customer Costomer1 = new Customer() { ID = 100, Name = "Mark", Salary = 5000, };

どちらが優れていて、どのような状況に適していますか?

コンストラクターは、オブジェクトをインスタンス化するときにさらに作業を行う必要があり、メンバーの初期化はフィールドとプロパティのみの値に署名するためのものであると言ったら正しいでしょうか?

そして、私がこれを正しく理解していれば、コンストラクターを使用できるのに、メンバーで2番目のケースを使用するのはなぜですか?

4

4 に答える 4

5

これは構文のショートカットです (デフォルトのコンストラクターを呼び出します)

Customer Costomer1 = new Customer() { ID = 100, Name = "Mark", Salary = 5000, }; 

以下に等しい

Customer Costomer1 = new Customer()
Costomer1.ID = 100;
Costomer1.Name = "Mark";
Costomer1.Salary = 5000;
于 2013-09-27T04:34:13.913 に答える
4

2 番目のオプションでは、検証を追加しない限り、パラメーターを省略して不完全なインスタンスを持つことができますが、最初のオプションではすべてのパラメーターが必要なため、部分的に構築されたオブジェクトを持つことはできません。

C# 4 を使用している場合は、最初のバージョンで名前付きパラメーターを使用できますが、複数のパラメーターがある場合は、2 番目のバージョンの方が読みやすくなります。

2 番目のバージョンはコード作成の手間が少なくなりますが、最初のバージョンの方が簡単に正しく作成できます。

于 2013-09-27T04:29:32.703 に答える
1

最初のものでは、オブジェクトの構築にパラメーター (またはオプションのパラメーター) が必要です。2 番目のオプションでは、必要に応じてオブジェクトのプロパティを初期化できます。プロパティを初期化する必要がない場合は、2 番目のオプションの方が適しています。

于 2013-09-27T04:30:44.553 に答える