Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Ниже приведен пример программы, демонстрирующий применение пространства имен Counter.




// Продемонстрировать применение пространства имен Counter.

Using System;

class NSDemo {

static void Main() {

// Обратите внимание на то, как класс CountDown // определяется с помощью пространства имен Counter.

Counter.CountDown cdl = new Counter.CountDown(10); int i;

do {

i = cdl.Count();

Console.Write(i + " ");

} while (i > 0);

Console.WriteLine ();

// Еще раз обратите внимание на то, как класс CountDown // определяется с помощью пространства имен Counter.

Counter.CountDown cd2 = new Counter.CountDown(20);

do {

i = cd2.Count();

Console.Write(i + " ");

} while (i > 0);

Console.WriteLine ();

cd2.Reset (4); do {

i = cd2.Count ();

Console.Write(i + " ");

} while (i > 0);

Console.WriteLine ();

}

}

При выполнении этой программы получается следующий результат.

10 9 876543210

Б 5 4 3 2 1 0 4 3 2 1 0

Для того чтобы скомпилировать эту программу, вы должны включить приведенный выше код в отдельный файл и указать его вместе с упоминавшимся выше файлом, содержащим код объявления пространства имен Counter. Если этот код

Находится в файле NSDemo. cs, а код объявления пространства имен Counter — в файле Counter. cs, то для компиляции программы используется следующая командная строка.

Csc NSDemo.cs counter.cs

Некоторые важные аспекты данной программы заслуживают более пристального внимания. Во-первых, при создании объекта класса CountDown необходимо дополнительно определить его имя с помощью пространства имен Counter, как показано ниже. Ведь класс CountDown объявлен в пространстве имен Counter.

Counter.CountDown cdl = new Counter.CountDown(10);

Это правило можно обобщить: всякий раз, когда используется член пространства имен, его имя необходимо дополнительно определить с помощью этого пространства имен. В противном случае член пространства имен не будет обнаружен компилятором.

Во-вторых, как только объект типа Counter будет создан, дополнительно определять его члены с помощью пространства имен уже не придется. Следовательно, метод cdl. Count () может быть вызван непосредственно без дополнительного указания пространства имен, как в приведенной ниже строке кода.

i = cdl.Count();

И в-третьих, ради наглядности примера рассматриваемая здесь программа была разделена на два отдельных файла. В одном файле содержится код объявления пространства имен Counter, а в другом — код самой программы NSDemo. Но оба фрагмента кода можно было бы объединить в единый файл. Более того, в одном файле исходного кода может содержаться два или более пространства имен со своими собственными областями объявлений. Когда оканчивается действие внутреннего пространства имен, возобновляется действие внешнего пространства имен — в примере с Counter это глобальное пространство имен. Ради большей ясности в последующих примерах все пространства имен, требующиеся в программе, будут представлены в одном и том же файле. Следует, однако, иметь в виду, что их допускается распределять по отдельным файлам, что практикуется чаще в выходном коде.

Предотвращение конфликтов имен с помощью пространств имен

Главное преимущество пространств имен заключается в том, что объявленные в них имена не вступают в конфликт с именами, объявленными за их пределами. Например, в приведенной ниже программе определяются два пространства имен. Первым из них является представленное ранее пространство имен Counter, а вторым — Counter2. Оба пространства имен содержат классы с одинаковым именем CountDown, но поскольку это разные пространства, то оба класса CountDown не вступают в конфликт друг с другом. Кроме того, оба пространства имен определены в одном и том же файле. Как пояснялось выше, это вполне допустимо. Безусловно, каждое из этих пространств имен можно было бы выделить в отдельный файл, если бы в этом возникла потребность.

// Пространства имен предотвращают конфликты имен.

// Объявить пространство имен Counter, namespace Counter {

// Простой вычитающий счетчик, class CountDown { int val; -

public CountDown(int n) { val = n;

}

public void Reset(int n) { val = n;

}

public int Count () {

if(val > 0) return val—; else return 0;

}

}

}

// Объявить пространство имен Counter2. namespace Counter2 {

/* Этот класс CountDown относится к пространству имен Counter2 и поэтому не вступает в конфликт с аналогичным классом из пространства имен Counter.

*/

class CountDown {

public void Count() {

Console.WriteLine("Это метод Count() из " +

"пространства имен Counter2.");

}

}

}

class NSDemo2 {

static void Main() {

// Это класс CountDown из пространства имен Counter. Counter.CountDown cdl = new Counter.CountDown(10);

// Это класс CountDown из пространства имен Counter2. Counter2.CountDown cd2 = new Counter2.CountDown(); int i;

do {

i = cdl.Count();

Console.Write(i + " ");

} while(i > 0);

Console.WriteLine();





Поделиться с друзьями:


Дата добавления: 2016-12-03; Мы поможем в написании ваших работ!; просмотров: 457 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Начинайте делать все, что вы можете сделать – и даже то, о чем можете хотя бы мечтать. В смелости гений, сила и магия. © Иоганн Вольфганг Гете
==> читать все изречения...

2286 - | 2070 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.009 с.