[解決済み] パブリックフィールドとオートマチックプロパティ
2022-03-24 22:19:11
質問
よく、クラスのフィールドにゲッターとセッターのメソッド(C#ではプロパティ)を作って、フィールドを外部に公開するのではなく、カプセル化を保護すべきだと言われます。
しかし、フィールドは値を保持するためだけに存在し、取得や設定に計算を必要としない場合も多々あります。これらについては、私たちは皆、このような番号を行うでしょう。
public class Book
{
private string _title;
public string Title
{
get => _title;
set => _title = value;
}
}
正直言って、こんなことを書くのは耐えられないので(本当に、書くことではなく、見ることなのです)、思い切ってパブリックフィールドを使いました。
その後、C# 3.0になって、自動プロパティが追加されましたね。
public class Book
{
public string Title { get; set; }
}
どっちが整然としていて、ありがたいのですが、実際、公開フィールドを作るのと何がそんなに違うのでしょうか?
public class Book
{
public string Title;
}
解決方法は?
で 関連質問 以前、私が投稿したジェフのブログには、いくつかの違いについて説明した記事へのリンクがありました。
- リフレクションは変数とプロパティで動作が異なるので、リフレクションに依存する場合は、すべてのプロパティを使用する方が簡単です。
- 変数に対してデータバインドができない。
-
変数をプロパティに変更することは、ブレークチェンジになります。例えば
TryGetTitle(out book.Title); // requires a variable
関連
-
[解決済み】C#におけるtypedefの等価性
-
[解決済み】取り消せないメンバはメソッドのように使えない?
-
[解決済み】HRESULTからの例外:0x800A03ECエラー
-
[解決済み】スレッド終了またはアプリケーションの要求により、I/O操作が中断されました。
-
[解決済み] JavaScriptでオブジェクトのキー/プロパティの数を効率的にカウントする方法
-
[解決済み] なぜJavaにはtransientフィールドがあるのですか?
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] プロパティとゲッターとセッターの使い分け
-
[解決済み] クラス内の項目の並び順。フィールド、プロパティ、コンストラクター、メソッド
-
[解決済み】C#には拡張プロパティがある?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] エンティティタイプ ApplicationUser は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】ここで「要求URIに一致するHTTPリソースが見つかりませんでした」となるのはなぜですか?
-
[解決済み] EntityTypeにキーが定義されていないエラー
-
[解決済み】C#のequal to演算子でtextとvarcharのデータ型は互換性がない
-
[解決済み] ...基礎となる接続は閉じられました。予期しないエラーが受信で発生しました
-
[解決済み】aspNetCore 2.2.0 - AspNetCoreModuleV2 エラー
-
[解決済み】Unityでゲームオブジェクトのすべての子をループスルーして破壊する方法?
-
[解決済み】「namespace」なのに「type」のように使われる。
-
[解決済み】ユーザー設定値を別のユーザー設定値で設定する
-
[解決済み】スレッド終了またはアプリケーションの要求により、I/O操作が中断されました。