【C#】オブジェクト初期化子
今回はオブジェクトの宣言文に関する「初期化子」という機能を挙げる。
クラス等のメンバーを初期化する際、通常はコンストラクタ内での初期化または、
呼出側にてインスタンス化後に個別に初期化を行う方法が一般的である。
「初期化子」
例えば、オブジェクトの初期化を以下の「_Init()」内にて行うとする。
class ClassA { public int Index; public string Name; public string Country; public ClassA() { Index = -1; Name = string.Empty; Country = string.Empty; } } private void _Init() { ClassA person = new ClassA(); person.Index = 1; person.Name = "tarou"; person.Country = "japan"; }
このように記述し、オブジェクトの変数宣言~コンストラクタの呼出~インスタンス化~初期化処理
という流れが一般的な方法だと思う。
しかしこの場合、コンストラクタにて既定の初期化を行い、更に呼出側で初期化を行う事になる。
これを、「初期化子」を使い記述すると以下のようになる。
class ClassA { public int Index; public string Name; public string Country; public ClassA() { Index = -1; Name = string.Empty; Country = string.Empty; } } private void _Init() { ClassA person = new ClassA { Index = 1, Name = "tarou", Country = "japan" }; }
記述から見て取れると思うが、上記だと既定のコンストラクタの呼出を行わない。
その代わりに、{ }内の処理を実行するという物。