Добавить в цитаты Настройки чтения

Страница 343 из 502

<b>    }</b>

<b>  }</b>

<b>}</b>

Обратите внимание на то, что в обоих файлах, test1.cs и test2.cs, объявляется пространство имен MyNS и что именно в этом пространстве в обоих файлах определяется класс MyClass. Следовательно, без псевдонима оба варианта класса MyClass будут недоступными ни одной из программ.

И наконец, ниже приведен исходный текст из третьего файла test3.cs, где используются оба варианта класса MyClass из файлов test1.cs и test2.cs. Это становится возможным благодаря операторам с внешними псевдонимами.

<b>// Операторы с внешними псевдонимами должны</b>

<b>// быть указаны в самом начале файла,</b>

<b>extern alias Asml;</b>

<b>extern alias Asm2;</b>

<b>using System;</b>

<b>class Demo {</b>

<b>  static void Main() {</b>

<b>    Asm1::MyNS.MyClass t = new Asm1::MyNS.MyClass() ;</b>

<b>    Asm2::MyNS.MyClass t2 = new Asm2::MyNS.MyClass();</b>

<b>  }</b>

<b>}</b>

Сначала следует скомпилировать файлы test1.cs и test2.cs в их библиотечные эквиваленты DLL. Для этого достаточно ввести в командной строке следующее.

<b>csc /t:library test1.cs</b>

<b>csc /t:library test2.cs</b>

Затем необходимо скомпилировать файл test3.cs, указав в командной строке

<b>csc /r:Asm1=test1.dll /r:Asm2=test2.dll test3.cs</b>

Обратите внимание на применение параметра /r, уведомляющего компилятор о том, что ссылка на метаданные находится в соответствующем файле. В данном случае псевдоним Asm1 связывается с файлом test1.dll, а псевдоним Asm2 — с файлом test2.dll.

В самой программе псевдонимы указываются в приведенных ниже операторах с модификатором extern, которые располагаются в самом начале файла.

<b>extern alias Asm1; extern alias Asm2;</b>

А в методе Main() псевдонимы используются для разрешения неоднозначности ссылок на класс MyClass. Обратите внимание на следующее применение псевдонима для обращения к классу MyClass.

<b>Asm1::MyNS.MyClass</b>

В этой строке кода первым указывается псевдоним, затем оператор разрешения пространства имен, далее имя пространства имен, в котором находится класс с неоднозначным именем, и, наконец, имя самого класса, следующее после оператора-точки. Та же самая общая форма пригодна и для других внешних псевдонимов.

Ниже приведен результат выполнения данной программы.

<b>Конструирование из файла MyClassl.dll.</b>

<b>Конструирование из файла MyClass2.dll.</b>

ЧАСТЬ 2 Библиотека C#

В части II рассматривается библиотека С#. Как пояснялось в части I, используемая в C# библиотека на самом деле является библиотекой классов для среды .NET Framework. Поэтому материал этой части книги имеет отношение не только к языку С#, но и ко всей среде .NET Framework в целом.

Библиотека классов для среды .NET Framework организована по пространствам имен. Для использования отдельной части этой библиотеки, как правило, достаточно импортировать ее пространство имен, указав его с помощью директивы using в исходном тексте программы. Конечно, ничто не мешает определить имя отдельного элемента библиотеки полностью вместе с его пространством имен, но ведь намного проще импортировать сразу все пространство имен.

Библиотека среды .NET Framework довольно обширна, и поэтому ее полное описание выходит за рамки этой книги. (На самом деле для этого потребовалась бы отдельная и довольно объемистая книга!) Поэтому в части II рассматриваются лишь самые основные элементы данной библиотеки, многие из которых находятся в пространстве имен System. Кроме того, в этой части описываются классы коллекций, а также вопросы организации многопоточной обработки и сетей.

--------------------------------

ПРИМЕЧАНИЕ

Классы ввода-вывода подробно рассматривались в главе 14.

--------------------------------

ГЛАВА 21 Пространство имен System

ГЛАВА 22 Строки и форматирование

ГЛАВА 23 Многопоточное программирование. Часть первая: основы

ГЛАВА 24 Многопоточное программирование. Часть вторая: библиотека TPL

ГЛАВА 25 Коллекции, перечислители и итераторы

ГЛАВА 26 Сетевые средства подключения к Интернету

ГЛАВА 21 Пространство имен System

В этой главе речь пойдет о пространстве имен System. Это пространство имен самого верхнего уровня в библиотеке классов для среды .NET Framework. В нем непосредственно находятся те классы, структуры, интерфейсы, делегаты и перечисления, которые чаще всего применяются в программах на C# или же считаются неотъемлемой частью среды .NET Framework. Таким образом, пространство имен System составляет ядро рассматриваемой здесь библиотеки классов.

Кроме того, в пространство имен System входит много вложенных пространств имен, поддерживающих отдельные подсистемы, например System.Net. Некоторые из этих пространств имен рассматриваются далее в этой книге. А в этой главе речь пойдет только о членах самого пространства имен System.

Члены пространства имен System

Помимо большого количества классов исключений, в пространстве имен содержатся приведенные ниже классы.