C# プロパティスコープの変数

C#7の機能追加のお話です。

C#7ではプロパティのスコープ内のみで使用できる変数が定義できるようです。
これにより以下のように実装できるようになります。

■今までの実装
private string _myField;
public string MyProperty {
 get { return _myField; }
 set {
  _myField = value;
  NotifyOfPropertyChange(nameof(MyProperty));
 }
}

■C#7での実装
public string MyProperty {
 string myField;
 get { return myField; }
 set {
  myField = value;
  NotifyOfPropertyChange(nameof(MyProperty));
 }
}

今まではクラス外からは_myFieldが隠蔽できていましたが、クラス内では自由にアクセスでき、隠蔽できてませんでした。
今回の機能追加により、プロパティのGetとSetからしかアクセスできない変数が定義できるようになり、完全な隠蔽ができるようになります。
VB6のころからこの機能が欲しいと思っていたので、とてもうれしいです。

コメントを残す