は:自動作成のためにnewを呼び出す必要がありますか?私はautopropertyている場合
public List<IObjects> MyObjects {get; set;}
を私はコンストラクタでMyObjects = new List<IObjects>();
をコールする必要がありますか?
は:自動作成のためにnewを呼び出す必要がありますか?私はautopropertyている場合
public List<IObjects> MyObjects {get; set;}
を私はコンストラクタでMyObjects = new List<IObjects>();
をコールする必要がありますか?
自動プロパーティは、他に何も設定しないと、デフォルト値になります。これはMyObjects = default(List<IObjects>)
に相当します。この場合はnullになります。私はそれがdefault(int)
(すなわち0)になるのでintのようなものの場合にはdefault(T)
であることを話すことのポイントを作るので、それをデフォルトでありヌルではないと考えることが重要です。
コンストラクタでこれを行う必要はありません。読み込み専用ではありません。他の場所(例えばMyClass.MyObjects = myList
)に値を設定することもできますし、そうしたい場合は完全に設定しないでおくこともできます。
コンストラクタで自動実装されたプロパティを初期化する必要はありません。デフォルト値を持ち、nullです。
初期化したい場合は、はい。 – David
初期化せずにリストに追加しようとするとどうなりますか? – Wheels73
@ Wheels73バックフィールドがnullになる、NullReferenceExceptionが予想される –