●学校情報

講座一覧・募集状況

学習方法

学習サポート

修了生の評価

受講生の横顔

当学院について

入学相談

入学手続

 

●講座情報

技術者養成講座

プログラミング講座

WEB講座

情報処理試験講座

Excel講座

Access講座

 

●関連コラム

関連コラム

関連用語集

 

logo

 

 

関連用語集

簡単に使えて便利!「自動実装プロパティ」と「プロパティ初期化子」

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#の標準的な書き方として多用されるので、しっかり覚えておきましょう!