Пространства имён и сборки
Пространства имён используют для логической группировки родственных типов, чтобы разработчику было проще найти нужный тип. Например в пространстве имён System.Text описаны типы для обработки строк, в System.IO типы для операций ввода и вывода.
Пространства имён можно объявлять как через директиву using:
using System.IO;
using System.Text
или писать полное имя с префиксом:
System.IO.FileStream fs = new System.IO.FileStream(...);
System.Text.StringBuilder sb = new System.Text.StringBuilder();
! CLR ничего не знает о пространстве имён. При обращении к какому-либо типу среде CLR нужно представить полное имя типа и сборку, содержащую описание типа, чтобы потом во время выполнения загрузить эту сборку и найти в ней нужны тип, чтобы далее им оперировать.
Связь между сборками и пространством имён
Пространство имен и сборка (файл, в котором реализован тип) не обязательно связаны друг с другом. В частности, различные типы, принадлежащие одному пространству имен, могут быть реализованы в разных сборках. Например, тип System.IO.FileStream реализован в сборке MSCorLib dll, а тип System. IO.FileSystemWatcher — в сборке System dll. На самом деле, сборка System IO dll в .NET Framework даже не поставляется. Одна сборка может содержать типы из разных пространств имен. Например, типы System.Int32 и System.Text.StringBuilder находятся в сборке MSCorLib dll.