プログラムセットVSネーミングスペース進級編

2948 ワード


トピックに入る前に、プロジェクト、ソリューション、プログラムセット、ネーミングスペースの4つの混同しやすい概念を理解しておきましょう.
プロジェクト:私たちが開発したソフトウェアです.のNETでは、コンソール、Windowsアプリケーション、クラスライブラリ、Webアプリケーションなど、さまざまなタイプのプロジェクトがあります.コンパイル後、生成する.exeファイルと.dllファイル.exeファイルには統一されたメインプログラムエントリがあり、実行できます.クラスライブラリは、他のプロジェクト呼び出しにいくつかの機能を提供するだけです.
ソリューション:VSで任意のタイプのプロジェクトを新規作成すると、このプロジェクトはソリューションに属します.デルのビジネスが比較的簡単である場合、ソリューションが果たす役割はそれほど大きくありません.しかし、複雑なソフトウェアを開発するには、複数のモジュール構成が必要です.例えば、開発でよく使われる3層アーキテクチャでは、U層は簡単なwindowsアプリケーションであり、B、D層は複数のクラスライブラリから構成されています.ソリューションを組み合わせることで、開発を完了することができます.
イメージ的に言えば、解決策は1つの容器で、この容器の中で、多くの層に分けて、多くの格、異なるプロジェクトを保存するために使用されます.
≪プログラム・セット|Program Set|emdw≫:プロジェクトはプログラム・セットです.1つのプログラムセットは、dllファイル、またはexeファイルとして表すことができます.
ネーミングスペース:主に、1つのプロジェクトで同じオブジェクト名が競合する可能性があることを回避するためです.
一、ネーミングスペース
例:System.Textネーミングスペースは文字列処理を実行するタイプのセットを定義し、System.IOネーミングスペースは、I/O操作のセットのタイプを定義します.次にシステムを構築する.IO.FileStreamオブジェクトとSystem.Text.StringBuilderオブジェクト:
<span style="font-size:18px;">public sealed class Program{
   public static void Main(){
      System.IO.FileStream fs = new System.IO.FileStream(…);
      System.Text.StringBuilder sb = new System.Text.StringBuilder();
   }
}</span>

明らかに、このようにコードを書くのは面倒です.FileStreamとStringBuilderタイプを直接参照し、タイプを減らす簡単な方法があるはずです.幸いなことに、多くのコンパイラはプログラマーのタイプを減らすメカニズムを提供しています.C#コンパイラはusing命令によってこのメカニズムを提供する.次のコードは、前の例と完全に一致しています.
<span style="font-size:18px;"><span style="font-size:24px;">using System.IO;                        //  “System.IO.”  
using System.Text;                     //  “System.Text.”  
public sealed class Program{
   public static void Main(){
      FileStream fs = new FileStream(…);
      StringBuilder sb = new StringBuilder();
   }
}</span></span>

編集者にとって、ネーミングスペースは、タイプ名の前に点で区切られた記号をいくつか追加するだけです.これにより、1つのタイプの名前がより長くなり、より唯一性がある.2つの同じクラスが同じネーミングスペースにある場合は競合し、異なるネーミングスペースに同じタイプがある場合は二義性も発生します.
注意、C#のusingインジケータは、コンパイラがタイプ名に異なる接頭辞を追加しようとすることを示します.一致が見つかるまで、ネーミングスペースは論理的であり、本当のタイプはプログラムセットにあり、タイプの定義を検索すると、コンパイラはどのプログラムセットを検索するかを知らなければなりません.コンパイラは知っているすべてのプログラムセットをスキャンしてタイプの定義を検索します.コンパイラが正しいプログラムを見つけたら、プログラムセット情報とタイプ情報が管理モジュールを生成するメタデータに追加されます.
重要なヒント:CLRはネーミングスペースの何も知らない.1つのタイプにアクセスする場合、CLRはタイプの完全な名前(これはかなり長い、句点記号を含む名前である可能性がある)と、そのタイプの定義がどのプログラムセットにあるかを知る必要があります.これにより、ランタイムは正しいプログラムセットをロードし、ターゲットタイプを見つけて操作することができます.
二、連絡と区別
1、ネーミングスペースはクラスライブラリの論理組織形式であり、プログラムセットはクラスライブラリの物理組織形式である.
2、1つのプログラムセット内に複数のネーミングスペースがあり、1つのネーミングスペースが異なるプログラムセットに存在する可能性がある
3、プログラムセットは実装タイプのファイルで、コンパイルして生成します. 
ネーミングスペースは、タイプに対する論理グループです. 
4、c#コンパイラはネーミングスペースに関心がある場合があります.クラスの完全な名前を決定し、CLRに渡す必要があります. 
CLRはプログラムセットのみに関心を持ち、クラスの完全な名前で対応するプログラムセットがロードされます.
三、まとめ
プロジェクトで分部クラスを使用することにより,分部クラスによってこのクラスの拡張と改善が実現できることが分かった.分部クラスを使用すると、ネーミングスペースを変更し、クラスを近く拡張します.これは、異なるプログラムセットに存在できるネーミングスペースです.プロジェクトを通じて成長し続け、努力してITO 2を迎えます.0の到来.