c# プロパティの歴史(ざっくり)


はじめに

現在(2019年8月現在)に至るまで、プロパティがどういうふうに進化していったか、ざっくりまとめてみた。

c#1.0、1.2、2.0時代

c#には初めから「プロパティ」という機能があり、
SetterメソッドとGetterメソッドいちいち作るより楽&見やすい。
↓↓こんなふうにいちいちメソッド作らなくても。。

    private int _a;
    public int GetA()
    {
        return _a;
    }
    pubic void SetA(int v)
    {
        _a = v
    }

↓↓簡単に書けるように!

    private int _a;
    public int A
    {
        get { return _a; }
        set { _a = value; }
    }

c#3~5時代

自動実装が追加されてさらに便利に!!
単純に代入取得だけの処理を書きたい場合は、わざわざgetとsetの中身を書かなくてもよくなった。

public int X { get; set; }    // まさかの一行!!

c#6時代

便利機能がいろいろ追加された!

たとえば、初期化子というものがつかえたり↓↓

public int A { get; set; } = 3;
// 「= 3」の部分が初期化子。
// ここでは、初期値3を入れている

自動実装で、Getterのみ指定ができるように。

public int A{ get; }
// コンストラクタか、初期化詞を遣えば、1度だけ設定できる。
// 以後値が変わることはない。

c#7時代

「{ return }」の記載が、「=>」により省略できるようになった。
(※c#6自体にこの機能はあったが、プロパティには使えなかった。)
↓↓こんな感じにかけるようになった。

public int A => 3;
// 「get {return 3;}」と同じ意味。

参考

++C++ // 未確認飛行 C
https://ufcpp.net/study/csharp/ap_ver6.html
buildinsider
https://www.buildinsider.net/language/csharplang/0600
C# 7.0 の新機能
https://qiita.com/tadnakam/items/afe390679e8b5dfa7fa3