違いは何ですか:
namespace Library{
class File{
//code inside it
}
}
と:
namespace Library{
public class File{
//code inside it
}
}
では、 public classとclassの違いは何でしょうか?
クラスを指定public
しないと暗黙的にinternal
. これは、クラスが同じアセンブリ内でのみ表示されることを意味します。を指定するpublic
と、クラスはアセンブリの外に表示されます。
internal
修飾子を明示的に指定することもできます。
internal class Foo {}
前者は次と同等です。
namespace Library{
internal class File{
//code inside it
}
}
es とs のprivate
メンバー(メソッド、プロパティ、フィールド、入れ子になったクラス、および入れ子になったs) と、s の直接のメンバーについては、非公開にできないため、すべての可視性はデフォルトで可能な限り最小に表示されます。class
struct
enum
internal
namespace
internal
つまり、同じアセンブリ内の他のコードはそれを見ることができますが、他には何も見えません (フレンド アセンブリとリフレクションの使用を除く)。
これには 2 つの理由があります。
public
非公開または内部にする必要があるものを誤って公開する可能性があります。誤って十分に表示されないものを作成した場合、明らかなコンパイル エラーが発生し、それを修正します。誤って何かを可視化しすぎてしまうと、コードに欠陥が生じ、エラーとしてフラグが立てられず、後で修正する必要のある重大な変更になります。アクセス修飾子を明示的に記述し、コード内で何が起こっているのかを明確にする方が、より良いスタイルであると考えられることがよくあります。
デフォルトでは、すべてのclass
es (およびそのすべてのタイプ) はinternal
であるため、外部からアクセスできるようにするには ( のようなものは除く)、それらを明示的InternalsVisibleToAttribute
に作成する必要があります。public