[解決済み】C#でprivateプロパティを使用する理由はあるのでしょうか?
2022-03-29 13:16:07
質問
今気づいたのですが、C#の プロパティの構成 を使用することもできます。 プライベート アクセス修飾子があります。
private string Password { get; set; }
技術的には面白いのですが プライベートフィールド には、さらに 式が少ない :
private string _password;
と、内部で必要になる時が来るとは想像もつきません。 得る でなく セット または セット ただし 得る はプライベートフィールドです。
private string Password { get; }
または
private string Password { set; }
が、もしかしたら
ネストされた/継承されたクラス
または、get/set に含まれるかもしれない
ロジック
しかし、私はプロパティを厳密にシンプルに保ち、明示的なメソッドにあらゆるロジックを任せる傾向があります。
GetEncodedPassword()
.
C#でプライベートプロパティを使う人はいますか?それとも、技術的には可能だけど、実際のコードではほとんど使われない構造の一つですか?
追記
いい回答がありましたので、個人所有の物件での使い方を抜粋しました。
- プライベートフィールドを遅延ロードする必要がある場合
- プライベートフィールドに特別なロジックが必要な場合、または計算値である場合
- プライベートフィールドはデバッグが困難な場合があるため
- 自分自身に契約を提示するため。
- シリアライズの一環として、公開されたプロパティを内部的に変換/簡略化する場合
- クラス内部で使用するグローバル変数をラップする。
解決方法は?
私は値をキャッシュする必要があり、遅延ロードしたい場合に使用します。
private string _password;
private string Password
{
get
{
if (_password == null)
{
_password = CallExpensiveOperation();
}
return _password;
}
}
関連
-
[解決済み】文字列が有効な DateTime " format dd/MM/yyyy " として認識されなかった。
-
[解決済み】"The ConnectionString property has not been initialized "を修正する方法
-
[解決済み] DBNullから他の型にオブジェクトをキャストすることができない
-
[解決済み】取り消せないメンバはメソッドのように使えない?
-
[解決済み】Swashbuckle/Swagger + ASP.Net Core: "Failed to load API definition" (API定義の読み込みに失敗しました
-
[解決済み] 2つのリストを結合する
-
[解決済み] 関数を終了するには?
-
[解決済み】WebResource.axdとは何ですか?
-
[解決済み] ファイルが使用中であるかどうかを確認する方法はありますか?
-
[解決済み] パブリックフィールドとオートマチックプロパティ
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C# [解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C#.
-
[解決済み】"The ConnectionString property has not been initialized "を修正する方法
-
[解決済み] [Solved] 不正な文字列値: '\xEFxBFxBD' for column
-
[解決済み】Socket.Selectがエラー "An operation was attempted on something that is not a socket" を返す。
-
[解決済み】MetadataException: 指定されたメタデータ・リソースをロードできない
-
[解決済み】ファイルへの読み書きの際に共有違反のIOExceptionが発生する C#
-
[解決済み】C#のequal to演算子でtextとvarcharのデータ型は互換性がない
-
[解決済み】URLから画像をダウンロードする方法
-
[解決済み】インデックスが範囲外でした。コレクションパラメータname:indexのサイズより小さく、非負でなければなりません。
-
[解決済み] 関数を終了するには?