名前空間は、名前解決のみに影響します。名前空間は、いかなる種類のストレージも意味しません。また、名前空間は、どの DLL にコードが含まれているかを決定するものでもありません。名前空間を使用すると、物理的に異なる DLL に存在する場合でも、関連するものを論理名でグループ化できます。
アセンブリは、基本的に単なる DLL または EXE ファイルです。これには、IL コードと、その DLL または EXE のコードを説明する型情報が含まれています。他にも多くのものを含めることができますが、最初は DLL と考えてください。
DLL または EXE を生成するプロジェクト (csproj) にコードをコンパイルすることにより、コードを特定のアセンブリに配置します。
名前空間は、複数のアセンブリにまたがることができます。つまり、その論理名前空間のメンバーであるクラスは、複数の DLL に存在する可能性があります。プロジェクトがそのクラスを含む正しいアセンブリ (DLL) を参照している場合にのみ、ソース コード内の特定のクラスにアクセスできます。
Internal 修飾子は、シンボルが同じアセンブリ内からのみアクセスできることを意味します。コードと同じ DLL にコンパイルされたコードのみが、internal でタグ付けされたプロパティまたはメソッドにアクセスできます。