【C#】オブジェクトの初期化子について【.NET】

C#機能バージョン対応表作成しました。
こちらの記事も合わせてご覧ください。
以下にモンスターステータスというサンプルDataClassがあります。
サンプルコード1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
public class Monster { /// <summary>番号</summary> public int MonsterNo { set; get; } /// <summary> 名前</summary> public string MonsterName { set; get; } /// <summary>体力</summary> public int HitPoint { set; get; } /// <summary>レベル </summary> public int Level { set; get; } /// <summary> レア度 </summary> public int Rarity { set; get; } } |
このクラスのインスタンスを初期値を設定した状態で生成する場合は以下のように記述します。
最初にデータクラスに以下コンスタラクタを定義して
サンプルコード2
1 2 3 4 5 6 7 8 9 |
public MonsterStatus(int monsterNo, string monsterName, int hitPoint, int level, int rarity) { MonsterNo = monsterNo; MonsterName = monsterName; HitPoint = hitPoint; Level = level; Rarity = rarity; } |
呼び出したいクラスでインスタンスを生成する
サンプルコード3
1 2 |
MonsterStatus monsterStatus = new MonsterStatus(1,"スライム",5,2,1); |
コンスタラクタに初期値を渡してあげるよくある実装方法になります。
次にオブジェクトの初期化子を利用した場合のインスタンス生成方法です。
今回は先ほどのコンスタラクタを定義していない状態で、呼び出したいクラスでインスタンスを生成します。
サンプルコード4
1 2 3 4 5 6 7 8 9 |
MonsterStatus monsterStatus = new MonsterStatus() { MonsterNo = 1, MonsterName = "スライム", HitPoint = 5, Level = 2, Rarity = 1, }; |
この実装方法であれば複数パターンのコンスタラクタ定義しなくとも大丈夫ですね!
また、ちょっとしたメリットとして、どのフィールドにどの初期値が設定されているのかがわかりやすいという点もありますね!
ディスカッション
コメント一覧
まだ、コメントがありません