バッキングフィールドとはなんや【C#】

 

 

最近、C#にてバッキングフィールドという単語を知ったので、

内容について調べて、まとめたいと思います。

 

Backing の意味は「補助」

backingは補助とか伴奏という意味みたいですね。

援助、後援、支援、支持

〔集合的に〕支持者、後援者

〔本などの〕裏張り、裏打ち、裏当て

〔ポピュラー音楽の〕伴奏、バック

 

自動生成プロパティの省略箇所=バッキングフィールド

下記のような、ゲッターセッターをもつ、自動生成プロパティがあるときに、

(C#3.0 から出来るようになった。)

1
public int Hoge { get; set ;}

実際には、値を一旦格納するフィールド変数を上記プロパティは持っていて、

下記のようなコードになっています。

そして、その値を一旦格納するフィールド変数こそがバッキングフィールドです。

(プロパティの補助的な立ち位置なので、backing なのかな。)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
private long hoge; // ここがバッキングフィールドです。

public long Hoge {

  get {

    return this.hoge;
  }

  set {

      this.hoge = value;

  }
}

 

実際に使った時のこと

業務の中で上記、バッキングフィールドを利用した事例としては、

API のリクエスト値用のクラスがあり、そのプロパティの中に IEnumrable型がありました。

リクエスト値用のクラスを初期化した際に、

上記は参照型であるため Null が初期値として入ります。

Null ではなく、空の配列を初期値として設定する為、

バッキングフィールドに対して空の配列を設定する修正をしました。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
private IEnumerable  hoge = Enumerable.Empty(); // 空の配列をバッキングフィールドに指定

public IEnumerable Hoge {

  get {
     return this.hoge;
  }

  set {
      this.hoge = value;
  }
}

 

その他調べたこと

他に調査の中で見つけたもの。内容については、あまりわかっていない。

Licensed under CC BY-NC-SA 4.0
Last updated on Aug 16, 2023 12:07 UTC
Built with Hugo
Theme Stack designed by Jimmy