publicとinternal可視性修飾子の違いを知りたい。
internalクラスでいつ使用する必要がありpublicますか?私は方法があるべきときに混乱していますpublicかinternal。
internalアセンブリからアクセスできることを読みましたがpublic、違いがあるアセンブリからも使用できます。
publicとinternal可視性修飾子の違いを知りたい。
internalクラスでいつ使用する必要がありpublicますか?私は方法があるべきときに混乱していますpublicかinternal。
internalアセンブリからアクセスできることを読みましたがpublic、違いがあるアセンブリからも使用できます。
回答:
public どこからでも見える。
internal アセンブリ内でのみ表示されます
内部APIを保護する目的でのみ内部を使用する傾向があります。たとえば、メソッドのいくつかのオーバーロードを公開できます。
public int Add(int x, int y)
public int Add(int x,int y, int z)
どちらも内部メソッドを呼び出します
internal int Add(int[] numbers)
その後、メソッドに高度な機能を追加できますが、プログラマーがメソッドを正しく呼び出すのに役立つファサードメソッドを使用して、メソッドを「保護」できます。(たとえば、配列パラメーターを使用した実装メソッドには、値の任意の制限がある場合があります。)
また、Reflectionを使用すると、可視性に関係なく、すべてのメソッドを呼び出すことができます。内部的に隠されたAPIへのアクセスを制御/獲得するためのもう1つの「ハッキング」。
internalとすべてのメソッドを作成することを想像してくださいpublic。より高い可視性が必要な場合は、クラス全体をpublic再度設定できます。しかし、このように使用することを意図しているかどうかはわかりません。グーグル...続ける私はそう編集:ほら、同じトピックstackoverflow.com/questions/9302236/...
internal単体テストを作成するときにも役立ちます。InternalsVisibleTo属性は、アセンブリコード内のテストアセンブリのアクセス内部メソッドましょう。つまり、リフレクションを使用せずに、外の世界にプライベートに見えるメソッドをテストできます。