この記事は2019年05月30日に投稿しました。
目次
- 作者: WINGSプロジェクト?江賢,山田祥寛
- 出版社/メーカー: 日経BP
- 発売日: 2017/11/09
- メディア: 単行本
- この商品を含むブログを見る
1. はじめに
こんにちは、iOSのエディタアプリPWEditorの開発者の二俣です。
今回は業務で使用しているC#でコンストラクタからコンストラクタを呼び出す方法についてです。
2. C#でコンストラクタからコンストラクタを呼び出す
C#でコンストラクタからコンストラクタを呼び出す方法は、コンストラクタを以下のような書式で記述します。
書式
- 自分のクラスのコンストラクタから別のコンストラクタを呼び出す場合
<コンストラクタ>([引数リスト1]) : this([引数リスト2])
- (参考)親クラスのコンストラクタを呼び出す場合
<コンストラクタ>([引数リスト1]) : base([引数リスト2])
実装例
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CSharpConstructor { class Person { public string Name { get; set; } public int Age { get; set; } // 引数無しのコンストラクタから引数有りのコンストラクタを呼び出します。 public Person() : this("", 0) { } // 引数有りのコンストラクタ // baseで親クラスのコンストラクタを呼び出します。 public Person(string name, int age) : base() { this.Name = name; this.Age = age; } // 確認用に各プロパティを文字列で出力します。 public override string ToString() { return $"Name={Name} Age={Age}"; } } class PersonEx : Person { public string Address { get; set; } // 引数無しのコンストラクタから引数有りのコンストラクタを呼び出します。 public PersonEx() : this("", 0, "") { } // 引数有りのコンストラクタ // baseで親クラスのコンストラクタを呼び出します。 public PersonEx(string name, int age, string address) : base(name, age) { this.Address = address; } // 確認用に各プロパティを文字列で出力します。 public override string ToString() { var str = base.ToString(); return $"{str} Address={Address}"; } } class Program { static void Main(string[] args) { var person1 = new Person(); Console.WriteLine(person1); var person2 = new Person("Taro", 20); Console.WriteLine(person2); var personEx1 = new PersonEx(); Console.WriteLine(personEx1); var personEx2 = new PersonEx("Jiro", 19, "Tokyo"); Console.WriteLine(personEx2); } } }
実行結果
Name= Age=0 Name=Taro Age=20 Name= Age=0 Address= Name=Jiro Age=19 Address=Tokyo
3. おわりに
クラスにプロパティを用意して、クラスのインスタンスを生成する際にコンストラクタ引数でプロパティの初期値を設定することはよくやります。
この場合コンストラクタ引数無しのコンストラクタのデフォルト値を設定処理は、処理を共通化するためコンストラクタ引数有りのコンストラクタを使って行う際、今回の方法を使います。
- 作者: 山田祥寛
- 出版社/メーカー: 翔泳社
- 発売日: 2017/12/15
- メディア: Kindle版
- この商品を含むブログを見る
紹介している一部の記事のコードはGitlabで公開しています。
興味のある方は覗いてみてください。
私が勤務しているニューラルでは、主に組み込み系ソフトの開発を行っております。
弊社製品のハイブリッドOS Bi-OSは高い技術力を評価されており、特に制御系や通信系を得意としています。
私自身はiOSモバイルアプリやウィンドウズアプリを得意としております。
ソフトウェア開発に関して相談などございましたら、お気軽にご連絡ください。
また一緒に働きたい技術者の方も随時募集中です。
興味がありましたらご連絡ください。
EMAIL : info-nr@newral.co.jp / m-futamata@newral.co.jp
TEL : 042-523-3663
FAX : 042-540-1688