簡単に使えて便利!「自動実装プロパティ」と「プロパティ初期化子」
C#では、フィールドを明示せずにプロパティを使う「自動実装プロパティ」や、
定義時に初期値を設定できる「プロパティ初期化子」が使えます。
簡潔で読みやすいコードを書くのにとても便利です。
@ 自動実装プロパティ(Auto-Implemented Property)
通常のプロパティでは、内部フィールドを明示してget/set
を定義しますが、
自動実装プロパティではその定義を省略
従来のプロパティ
private string name;
public string Name {
get { return name; }
set { name = value; }
}
自動実装プロパティ(簡略版)
public string Name { get; set; }
C#コンパイラが裏で自動的にフィールドを作成してくれます。
読み取り専用のプロパティも可能(getのみ)
public string Id { get; } // 初期化はコンストラクタまたは初期化子で
A プロパティ初期化子(Property Initializer)
自動実装プロパティと組み合わせて、定義時に初期値を設定することができます(C# 6.0以降)。
public string Status { get; set; } = "未設定";
public int Age { get; set; } = 18;
結果として
var person = new Person();
Console.WriteLine(person.Status); // → 未設定
Console.WriteLine(person.Age); // → 18
B コンストラクタとの併用もOK
プロパティ初期化子での初期化はデフォルト値として扱われ、
コンストラクタで上書きすることもできます。
public class Person {
public string Name { get; set; } = "名無し";
public Person(string name) {
Name = name; // 上書きされる
}
}
var p1 = new Person("花子");
Console.WriteLine(p1.Name); // → 花子
C getのみの自動実装(読み取り専用)
public DateTime CreatedAt { get; } = DateTime.Now;
このようにすると、一度設定されたら変更不可な「読み取り専用プロパティ」を作れます。
まとめ
自動実装プロパティを使うことで、シンプルかつ安全にデータを管理できます。
プロパティ初期化子を使えば、初期値の設定も簡単に行えます。
C#の標準的な書き方として多用されるので、しっかり覚えておきましょう!