バッキングフィールドの必要性
「カプセル化」に基づいてバッキングフィールドを用意して、プロパティからアクセスさせる書き方をされているのをよく見かけるのですが
以下のコードのように
特に値の変更もされずにバッキングフィールドのみがreturn、バッキングフィールドにvalueをセットしているだけ
というプロパティ
c#
1private int hoge; // バッキングフィールド 2public int Hoge 3{ 4 get 5 { 6 return this.hoge; 7 } 8 set 9 { 10 this.hoge = value; 11 } 12}
と
以下のような
コンパイラが自動でフィールドを用意してくれるプロパティのみの実装
と、何か違うのでしょうか?
c#
1public int Hoge { get; set ;}
以下のコードのように、プロパティ呼び出し時に値が変更されるような処理であれば、バッキングフィールドが必要なのはわかるのですが、とくに何もしていない値を返すだけのプロパティにバッキングフィールドは必要なのかどうか疑問に思いました。
c#
1private int hoge; // バッキングフィールド 2public int Hoge 3{ 4 get 5 { 6 return this.hoge + 2; 7 } 8 set 9 { 10 this.hoge = value * 2; 11 } 12}
回答5件
良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2022/11/20 08:56