前回のエントリーでは、NET Compiler Platformの新機能を使ってImmutableなクラスを記述しました。
【.NET Compiler Platform】Primary constructorsでImmutableなクラスを記述する - プログラマーな日々
Primary constructorsで、Immutableなクラスを記述してみます。 ...
その際に使った.NET Compiler Platformの新機能を解説します。今回はPrimary constructorsです。
Primary constructorsとは
明示的なコンストラクタ宣言なしで、クラスや構造体に直接コンストラクタパラメータを宣言する記法です。
従来の記法
Primary constructorsを使用しない従来の記法では、以下のようになります。
class ParsonClass { private string firstName; private string LastName; public ParsonClass(string firstName, string lastName) { this.firstName = firstName; this.LastName = lastName; } } struct ParsonStruct { private string firstName; private string LastName; public ParsonStruct(string firstName, string lastName) { this.firstName = firstName; this.LastName = lastName; } }
Primary constructorsを使用した記法
Primary constructorsを使うと、コンストラクタ宣言をなくすことができます。
class ParsonClass(string firstName, string lastName) { private string firstName = firstName; private string LastName = lastName; } struct ParsonStruct(string firstName, string lastName) { private string firstName = firstName; private string LastName = lastName; }
別のコンストラクタからPrimary constructorsを呼び出す
こんなこともできます。
using System; namespace PrimaryConstructor1 { class Program { static void Main(string[] args) { { Parson p = new Parson("Taro", "Sato"); Console.WriteLine(p.FullName); // "Taro Sato"が出力される } { Parson p = new Parson("Jiro", "Suzuki", "M"); Console.WriteLine(p.FullName); // "Jiro M Suzuki"が出力される } Console.ReadKey(); } } class Parson(string firstName, string lastName) { private string firstName = firstName; private string LastName = lastName; private string middleName; public Parson(string firstName, string lastName, string middleName) : this(firstName, lastName) { this.middleName = middleName; } public string FullName { get { return string.Format("{0} {1} {2}", this.firstName, this.middleName, this.LastName); } } } }