問題タブ [access-modifiers]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - C#でプライベートプロパティを使用する理由はありますか?
C#プロパティ構造はプライベートアクセス修飾子と一緒に使用することもできることに気づきました。
これは技術的には興味深いものですが、プライベートフィールドでは式典がさらに少なくなるため、いつ使用するかは想像できません。
また、内部で取得できる必要があるが、設定できない、または設定できないがプライベートフィールドを取得できない必要があるのはいつか想像できません。
また
しかし、ネストされた/継承されたクラスのユースケースや、プロパティの値を返すだけでなく、get / setにロジックが含まれる場合もありますが、プロパティを厳密に単純に保ち、明示的なメソッドにロジックを実行させる傾向がありますが、例:GetEncodedPassword()
。
誰かが何らかの理由でC#でプライベートプロパティを使用していますか、それとも技術的には可能ですが、実際にはほとんど使用されていないコード構造の1つにすぎませんか?
補遺
良い答え、それらを読んで、私は私有財産のこれらの使用法をカリングしました:
- プライベートフィールドを遅延ロードする必要がある場合
- プライベートフィールドに追加のロジックが必要な場合、または計算値である場合
- プライベートフィールドはデバッグが難しい場合があるため
- 「自分に契約を提示する」ために
- シリアル化の一部として公開されたプロパティを内部的に変換/簡素化する
- クラス内で使用されるグローバル変数のラッピング
c++ - 公開、保護、非公開
このコードを見てください:
B は this->protectedfield にアクセスできますが、a.protectedfield にはアクセスできません。なんで?しかし、B は A のサブクラスです。
java - 1つのファイル内の複数のクラス:ここでは修飾子privateは許可されていません
このコードがコンパイルされない理由を理解できません:
-という名前のファイルにコンテンツを保存していますA.java
が、エラーが発生します。
これは、Bをプライベートおよび保護として試した場合の両方で発生します。誰かがこの背後にある理由を教えてもらえますか?
ありがとう !
c# - seal キーワードがアクセス修飾子のリストに含まれていないのはなぜですか?
sealed
C# 言語のアクセス修飾子のリストに含める必要があると思います。除外された理由を誰か教えてください。
c# - 「親」クラスによってのみ書き込み可能であるが、他のクラスによって読み取り可能なクラス
私はC#を使用していますが、これについてはあまり経験がありません(これまで、ほとんどjava / php / javascriptを使用してきました)
私が欲しいのは、いくつかのデータを保存するクラスです。このデータは、他の1つのクラスによってのみ書き込むことができますが、プログラム内の他のクラスによって読み取ることはできます。
このようなもの:
c++ - 派生オブジェクトへの基本クラスポインタを介して派生プライベートメンバー関数にアクセスできるのはなぜですか?
出力はbye
これがどのように実装されているかについては問題ありません。vtablesを使用していて、派生のvtableに新しいadd()関数のアドレスが含まれていることを理解しました。しかし、add()はプライベートですが、クラス外でアクセスしようとすると、コンパイラーはエラーを生成しませんか?どういうわけかそれは正しくないようです。
c# - 保護レベルのため、クラスにアクセスできません
私は3つのクラスを持っています。すべてが同じ名前空間の一部です。これが3つのクラスの基本です。
次のエラーが表示されます
'StubGenerator.PropGenerator.Method' は、保護レベルが原因でアクセスできません
FBlock.cs ファイルの次の行を参照します。
と
'StubGenerator.PropGenerator.Method' は、保護レベルが原因でアクセスできません
FBlock.cs ファイルの次の行を参照します。
と
一貫性のないアクセシビリティ: 戻り値の型 'StubGenerator.PropGenerator.Method' は、メソッド 'StubGenerator.PropGenerator.FBlock.AddMethod(string)' よりもアクセスしにくいです
FBlock.cs ファイルの次の行を参照します。
クラス Method を public にしても、エラーは解決されません。Property クラスを呼び出すときにエラーが発生しない理由がわかりません。Method クラスを公開しても問題が解決しない理由がわかりません。
何か案は?
質問するように編集しました。これを引き起こすファイルの設定はありますか?
c# - C# の既定のアクセス修飾子
次のような新しいオブジェクトを作成する場合、デフォルトでどのアクセス修飾子が設定されますか?
access-modifiers - アクセス修飾子 ... なぜ?
わかりましたので、 OOP 内のアクセス修飾子に関して、なぜプログラマーがそれほどストレスを感じるのかを考えていました。
このコードを例に取りましょう / PHP!
web_address はプライベートであるため、 によって変更することはできませんが$object->web_address = 'w.e.'
、変数が変更されるのは、プログラムが変更する場合のみです。$object->web_address = 'w.e.';
アプリケーション内で変数を変更したくない場合は、プログラミングに変数を変更するコードがないようにアプリケーションを作成します。したがって、変数は決して変更されませんか?
だから私の質問は次のとおりです。プライベート/保護/非公開エンティティを使用する際の主なルールと理由は何ですか
oop - OOP、保護対公開。いつ使う?
クラス変数をプライベートにすることとパブリックにすることの利点を理解しようとしています。ゲッター/セッターがプライベート/保護されたデータにアクセス/変更することを理解していますが、その唯一の目的は「自分のデータを壊さないようにする」ことですか? 例:言い方がわかりません
とは異なる大混乱の可能性を秘めている