最近、C#にてバッキングフィールドという単語を知ったので、
内容について調べて、まとめたいと思います。
Backing の意味は「補助」
backingは補助とか伴奏という意味みたいですね。
援助、後援、支援、支持
〔集合的に〕支持者、後援者
〔本などの〕裏張り、裏打ち、裏当て
〔ポピュラー音楽の〕伴奏、バック
自動生成プロパティの省略箇所=バッキングフィールド
下記のような、ゲッターセッターをもつ、自動生成プロパティがあるときに、
(C#3.0 から出来るようになった。)
|
|
実際には、値を一旦格納するフィールド変数を上記プロパティは持っていて、
下記のようなコードになっています。
そして、その値を一旦格納するフィールド変数こそがバッキングフィールドです。
(プロパティの補助的な立ち位置なので、backing なのかな。)
|
|
実際に使った時のこと
業務の中で上記、バッキングフィールドを利用した事例としては、
API のリクエスト値用のクラスがあり、そのプロパティの中に IEnumrable
リクエスト値用のクラスを初期化した際に、
上記は参照型であるため Null が初期値として入ります。
Null ではなく、空の配列を初期値として設定する為、
バッキングフィールドに対して空の配列を設定する修正をしました。
|
|
その他調べたこと
他に調査の中で見つけたもの。内容については、あまりわかっていない。
- C# 7.3 から自動実装プロパティのバッキングフィールドに属性をつけられるようになった
- _hoge のようにアンダーバーとプロパティ名をつけるとバッキングフィールドと見なされる。
- Entity Framework (EF) Core で DB の値を格納するときに、プロパティもしくはフィールド名どちらでも一致できるようにしている?