自動実装するプロパティを使ってみる

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なので試してません。