440

internalC#のとprivateアクセス修飾子の違いは何ですか?

4

7 に答える 7

558

internalはアセンブリスコープ用です(つまり、同じ.exeまたは.dll内のコードからのみアクセスできます)

privateはクラススコープ用です(つまり、同じクラスのコードからのみアクセスできます)。

于 2010-09-28T13:57:55.723 に答える
226

以下の説明を見つけてください。詳細については、このリンクを確認してください -http://www.dotnetbull.com/2013/10/public-protected-private-internal-access-modifier-in-c.html

プライベート: -プライベートメンバーは、独自のタイプ(独自のクラス)内でのみアクセスできます。

内部: -内部メンバーは、継承(その派生型)またはクラスのインスタンスによってアセンブリ内でのみアクセスできます。

ここに画像の説明を入力してください

参照 :

dotnetbull-c#のアクセス修飾子とは

于 2013-10-07T16:57:45.227 に答える
75

internalメンバーは、宣言されているアセンブリ内のすべてのコードに表示されます。
(および[InternalsVisibleTo]属性を使用して参照される他のアセンブリにも表示されます)

privateメンバーは、宣言しているクラスにのみ表示されます。(ネストされたクラスを含む)

外部(ネストされていない)クラスはprivate、それをプライベートにするための包含スコープがないため、宣言できません。

聞き忘れた質問に答えるために、protectedメンバーはメンバーのようなものですprivateが、宣言型を継承するすべてのクラスにも表示されます。(ただし、少なくとも現在のクラスのタイプの式でのみ)

于 2010-09-28T13:57:35.167 に答える
8

プライベートメンバーは、クラスの本体または宣言された構造体内でのみアクセスできます。

内部タイプまたはメンバーは、同じアセンブリ内のファイル内でのみアクセスできます

于 2010-09-28T13:58:18.530 に答える
8

private -class / scope / structect'のカプセル化。

internal-アセンブリでのカプセル化。

于 2015-07-25T08:16:56.087 に答える
5

内部メンバーはアセンブリ内でアクセス可能です(同じプロジェクトでのみアクセス可能)

プライベートメンバーは同じクラス内でアクセス可能です

初心者のための例

ソリューションには2つのプロジェクト(Project1、Project2)があり、Project1にはProject2への参照があります。

  • Project2で記述されたパブリックメソッドは、Project2とProject1でアクセスできます。
  • Project2で記述された内部メソッドは、Project2でのみアクセスできますが、Project1ではアクセスできません。
  • Project2のclass1で記述されたプライベートメソッドは、同じクラスにのみアクセスできます。プロジェクト1以外のプロジェクト2の他のクラスでもアクセスできません。
于 2020-05-12T05:31:55.203 に答える
3

Internalを使用すると、たとえば、複数のビジネスロジッククラス間で(スレッドセーフのために)データアクセス静的クラスを参照できますが、接続プールでそのクラス/トリップを相互に継承するようにサブスクライブせず、最終的にDALクラスの許可を回避できます。パブリックレベルでのアクセスを促進するため。これには、設計とベストプラクティスに無数の裏付けがあります。

Entity Frameworkは、このタイプのアクセスをうまく利用しています

于 2014-08-29T15:23:28.753 に答える