Герберт Шилдт - C# 4.0 полное руководство - 2011
- Название:C# 4.0 полное руководство - 2011
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Герберт Шилдт - C# 4.0 полное руководство - 2011 краткое содержание
C# 4.0 полное руководство - 2011 - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Директива using
Если в программе присутствуют частые ссылки на члены конкретного пространства имен, то указывать это пространство всякий раз, когда требуется ссылка на него, не очень удобно. Преодолеть это затруднение помогает директива using. В подавляющем большинстве приводившихся ранее примеров программ с помощью этой директивы делалось видимым глобальное для C# пространство имен System, поэтому она отчасти вам уже знакома. Как и следовало ожидать, с помощью директивы using можно сделать видимыми вновь создаваемые пространства имен.
Существуют две формы директивы using. Ниже приведена первая из них:
using имя;
где имя обозначает имя того пространства имен, к которому требуется получить доступ. Все члены, определенные в указанном пространстве имен, становятся видимыми, и поэтому могут быть использованы без дополнительного определения их имен. Директиву using необходимо вводить в самом начале каждого файла исходного кода перед любыми другими объявлениями или же в начале тела пространства имен.
Приведенная ниже программа является вариантом предыдущего примера, переработанным с целью продемонстрировать применение директивы using, делающей видимым создаваемое пространство имён.
// Продемонстрировать применение директивы using, using System;
// Сделать видимым пространство имен Counter, using 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;
}
}
}
class NSDemo3 {
static void Main() {
// Теперь класс CountDown может быть использован непосредственно. CountDown cdl = new CountDown(10); int i;
do {
i = cdl.Count ();
Console.Write (i + " ") ;
} while (i > 0);
Console.WriteLine ();
CountDown cd2 = new 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 ();
}
}
В эту версию программы внесены два существенных изменения. Первое из них состоит в применении директивы using в самом начале программы, как показано ниже.
using Counter;
Благодаря этому становится видимым пространство имен Counter. Второе изменение состоит в том, что класс CountDown больше не нужно дополнительно определять с помощью пространства имен Counter, как демонстрирует приведенная ниже строка кода из метода Main ().
CountDown cdl = new CountDown(10);
Теперь пространство имен Counter становится видимым, и поэтому класс CountDown может быть использован непосредственно. -
Рассматриваемая здесь программа иллюстрирует еще одно важное обстоятельство: применение одного пространства имен не отменяет действие другого. Когда пространство имен делается видимым, это просто дает возможность использовать его содержимое без дополнительного определения имен. Следовательно, в данном примере оба пространства имен, System и Counter, становятся видимыми.
Вторая форма директивы using
Вторая форма директивы using позволяет определить еще одно имя (так называемый псевдоним) типа данных или пространства имен. Эта форма приведена ниже:
using псевдоним = имя;
где псевдоним становится еще одним именем типа (например, типа класса) или пространства имен, обозначаемого как имя. После того как псевдоним будет создан, он может быть использован вместо первоначального имени.
Ниже приведен вариант программы из предыдущего примера, измененный с целью показать создание и применение псевдонима MyCounter вместо составного имени Counter.CountDown.
// Продемонстрировать применение псевдонима, using System;
// Создать псевдоним для составного имени Counter.CountDown. using MyCounter = Counter.CountDown;
// Объявить пространство имен для счетчиков, 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;
}
}
}
class NSDemo4 {
static void Main() {
// Здесь и далее псевдоним MyCounter используется // вместо составного имени Counter.CountDown.
MyCounter cdl = new MyCounter(10); int i;
do {
i = cdl... Count() ;
Console.Write(i + " ");
} while (i > 0);
Console.WriteLine () ;
MyCounter cd2 = new MyCounter (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 ();
}
}
Псевдоним MyCounter создается с помощью следующего оператора.
using MyCounter = Counter.CountDown;
После того как псевдоним будет определен в качестве другого имени класса Counter. CountDown, его можно использовать для объявления объектов без дополнительного определения имени данного класса. Например, в следующей строке кода из рассматриваемой здесь программы создается объект класса CountDown.
MyCounter cdl = new MyCounter (10);
Аддитивный характер пространств имен
П04 одним именем можно объявить несколько пространств имен. Это дает возможность распределить пространство имен по нескольким файлам или даже разделить его в пределах одного и того же файла исходного кода. Например, в приведенной ниже программе два пространства имен определяются под одним и тем же именем Counter. Одно из них содержит класс CountDown, а другое — класс CountUp. Во время компиляции содержимое обоих пространств имен Counter складывается.
Интервал:
Закладка: