C#でプロパティを書くときに特別な処理が要らなければgetter, setterを省略できるらしい
- getter, setter書いてると冗長だし、コードが長くなって見づらくなるので書きたくない。ということで使ってみる。
よくあるprivateのフィールドとpublicのプロパティ
/// <summary> ///ルートディレクトリ /// </summary> private string rootPath; /// <summary> ///ルートディレクトリ /// </summary> public string RootPath { get { return rootPath; } }
- うーん、長すぎるというかこんなのがずっとつづいてると見づらいですね。
自動実装プロパティに書き換える
public static string RootPath { get; }
- と思ったらエラーです。
'Foo.Bar.RootPath.get' は abstract または extern に指定されていないため、本体を宣言する必要があります。自動的に実装されたプロパティは、get および set アクセサーの両方を定義する必要があります。
- 「get および set アクセサーの両方を定義する必要があります。」だからですね。
- 以下のように書きなおしたらうまくいきました。
- もともとsetterは公開していなかったのでprivateにしています。
public static string RootPath { get; private set; }
- getのみの自動実装プロパティがC# 6.0から使えるというのも見ましたが、自分の環境はまだVisual Studio 2012なので試してません。