は:どの時点で自動プロパティはいつ初期化されますか?私は自動プロパティとして子オブジェクトを持つこのオブジェクト、持っている場合
public class ParentObject
{
public ChildObject Child { get; set; } = new ChildObject();
}
をChild
が初期化されますか? ParentObject
の建設中に、またはちょうどChildObject
の最初の「取得」が発生するのと同じですか?
私はいくつかの古いネット2コードを修正することを検討しているので、私は尋ねます。明示的に設定されるまでChild
がnullであることを意味..which
public class ParentObject
{
private ChildObject child;
public ChildObject Child
{
get { return this.child; }
set { this.child = value; }
}
}
:古いコードは次のように明示的なバッキングフィールドがあります。それで、さらに利益をもたらしている私たちのようなチェックを行う必要はありません(デフォルト初期化子で自動プロパティの新しいスタイルを使用するとよいでしょう:
if (parentobject.Child == null) parentobject.Child = new Child();
をしかし、子プロパティは、建設に初期化されている場合
初期化を意味するときに、インスタンス化という単語を使用しています。プロパティはインスタンス化されません。プロパティのインスタンスはありません。 – Servy
Eh?特定のプロパティを明示的に初期化しないコードをリファクタリングしています。確かに*初期化の使用はあなたが何か違うことをしていることを意味しているので、実際にはリファクタリングではありません。 –
それは単に 'public ChildObject Child {get;セット; }は、元のリファクタリングに最も近いものになります。 – David