違いは何ですか:
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
}
}
すべての可視性は、private
esおよびclass
s(メソッド、プロパティ、フィールド、ネストされたクラス、ネストされたstruct
s)のメンバーの場合、enum
の最小表示にデフォルト設定されます。 internal
sの直接のメンバーの場合、namespace
はプライベートにできないためです。
internal
は、同じアセンブリ内の他のコードがそれを見ることができることを意味しますが、他には何もありません(フレンドアセンブリとリフレクションの使用を除く)。
これには2つの理由があります。
public
に設定されている場合、プライベートまたは内部のはずの何かを誤って公開してしまう可能性があります。誤って十分に見えないものを作成した場合、明らかなコンパイルエラーが発生し、修正します。誤って目に見えるものを誤って作成した場合、エラーとしてフラグが付けられず、後で修正するための重大な変更になるコードに欠陥が生じます。多くの場合、アクセス修飾子を明示的にすること、コードを明確にすること、何が起こっているかがより良いスタイルと見なされます。
デフォルトでは、すべてのclass
es(およびそれに関するすべてのタイプ)はinternal
であるため、外部からアクセスできるようにするために(InternalsVisibleToAttribute
など)それらをpublic
に明示的にします。