Главная » Просмотр файлов » Г. Шилдт - Полный справочник по C#

Г. Шилдт - Полный справочник по C# (1160789), страница 80

Файл №1160789 Г. Шилдт - Полный справочник по C# (Г. Шилдт - Полный справочник по C#) 80 страницаГ. Шилдт - Полный справочник по C# (1160789) страница 802019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 80)

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

Общаяформа объявления пространства имен имеет следующий вид:namespace имя {// Члены}Здесь элемент имя означает имя пространства имен. Все, что определено внутрипространства имен, находится в пределах его области видимости. Следовательно, пространство имен определяет область видимости. Внутри пространства имен можнообъявлять классы, структуры, делегаты, перечисления, интерфейсы или другое пространство имен.432Часть I.

Язык С#Рассмотрим пример использования ключевого слова namespace, которое создаетпространство имен Counter. Оно ограничивает распространение имени, используемого для реализации класса обратного счета, именуемого Count Down.// Объявление пространства имен для счетчиков.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;)Здесь класс CountDown объявляется внутри области видимости, определенной пространством имен Counter.А теперь рассмотрим программу, которая демонстрирует использование пространства имен Counter.// Демонстрация использования пространства имен.using System;// Объявляем пространство имен для счетчиков,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 v a l — ;else return 0;c l a s s NSDemo {p u b l i c s t a t i c void Main() {Counter.CountDown cdl = new Counter.CountDown(10);int i;do {Глава 16.

Пространства имен, препроцессор и компоновочные файлы433i = cdl.count();Console.Write(i + " " ) ;} while(i > 0 ) ;Console.WriteLine();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();Вот результаты выполнения этой программы:1 10 9 8 7 6 5 4 3 2 1 01 20 19 18 17 16 15 14 13 12 11 10 9 8 7 б 5 4 3 2 1 01 4 3 2 1 0Здесь имеет смысл обратить ваше внимание вот на что. Во-первых, посколькукласс CountDown объявляется внутри пространства имен Counter, то при созданииобъекта класса CountDown, как показано в следующей инструкции, имя класса необходимо указывать вместе с именем пространства имен Counter.1 Counter.CountDown c d l = new Counter.CountDown(10);Но если объект Counter уже создан, то в дальнейшем называть его (или любой изего членов) полностью (по "имени-отчеству") необязательно.

Таким образом, методc d l . count () можно вызывать без указания имени пространства имен, как показано вэтой строке кода:I i = cdl.count();Пространства имен предотвращают конфликты по совпадению именОсновное преимущество использования пространств имен состоит в том, что имена, объявленные внутри одного из них, не конфликтуют с такими же именами, объявленными вне его. Например, в следующей программе создается еще один классjCountDown, но он находится в пространстве имен Counter2.// Пространства имен предотвращают конфликты,// связанные с совпадением имен.using System;// Объявляем пространство имен для счетчиков,namespace Counter {// Простой счетчик для счета в обратном направлении.class CountDown {int val;public CountDown(int n) {val = n;434Часть I. Язык С#public void reset(int n) {val = n;public int count() {if(val > 0) return v a l — ;else return 0;// Объявляем еще одно пространство имен,namespace Counter2 {/* Этот класс CountDown находится в пространствеимен Counter2 и не будет конфликтовать с одноименнымклассом, определенным в пространстве имен Counter.

*/class CountDown {public void count() {Console.WriteLine("Этот метод count() находится в" +" пространстве имен Counter2.");class NSDemo {public 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();cd2.count();1Результаты выполнения этой программы имеют такой вид:10 9 8 7 6 5 4 3 2 1 0Этот метод count() находится в пространстве имен Counter2.Как подтверждают результаты выполнения этой программы, класс CountDownвнутри пространства имен Counter отделен от класса CountDown, определенного впространстве имен Counter2, и поэтому имена не конфликтуют.

Хотя этот примерочень простой, он позволяет понять, как избежать конфликтов при совпадении именмежду своим кодом и кодом, написанным другими, поместив собственные классы вопределенное пространство имен.Глава 16. Пространства имен, препроцессор и компоновочные файлы435Ключевое СЛОВО u s i n g"Как разъяснялось в главе 2, если программа включает часто встречающиеся ссылкина определенные члены пространства имен, то необходимость указывать имя этогопространства имен при каждом к ним обращении, очень скоро утомит вас.

Эту проблему позволяет решить директива using. В примерах этой книги использовалась директива using, чтобы сделать текущим С#-пространство имен System, поэтому выуже с ним знакомы. Нетрудно предположить, что директиву u s i n g можно также использовать для объявления действующими пространств имен, создаваемых программистом.Существует две формы применения директивы using. Первая имеет такой вид:u s i n g имя;Здесь элемент имя означает имя пространства имен, к которому необходимо получить доступ. С этой формой директивы u s i n g вы уже знакомы. Все члены, определенные внутри заданного пространства имен, становятся частью этого (текущего) пространства имен, поэтому их можно использовать без дополнительного упоминания егоимени.

Директива u s i n g должна находиться в начале каждого программного файла,т.е. предшествовать всем остальным объявлениям.В следующей программе переработан пример использования счетчиков из предыдущего раздела, чтобы показать, как с помощью директивы u s i n g можно чтобы сделать текущим создаваемое программистом пространство имен.// Демонстрация использования пространства имен.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 v a l — ;else return 0;class NSDemo {public static void Main() {// Теперь класс CountDown можно использовать// без указания имени пространства имен.CountDown cdl = new CountDown(10);436Часть I. Язык С#inti;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();Эта программа иллюстрирует еще один важный момент: использование одногопространства имен не аннулирует другое.

При объявлении действующим некоторогопространства имен его имя просто добавляется к именам других, которые действуют вданный момент. Следовательно, в этой программе действуют пространства именSystem и Counter.Вторая форма использования директивы usingДиректива using обладает еще одной формой применения:using псевдоимя = имя;Здесь элемент псевдоимя задает еще одно имя для класса или пространства имен, •заданного элементом имя. Теперь программу счета в обратном порядке переделаемеще раз, чтобы показать, как создается псевдоимя Count для составного имениCounter.CountDown.// Демонстрация использования псевдоимени.using System;// Создаем псевдоимя для класса Counter.CountDown.using Count = Counter.CountDown;// Объявляем пространство имен для счетчиков.namespace Counter {// Простой счетчик для счета в обратном направлении.class CountDown {int val;лpublic CountDown(int n) {val = n;}p u b l i c v o i d r e s e t ( i n t n) {,Глава 16.

Пространства имен, препроцессор и компоновочные файлы437val= n;public int count() {if(val > 0) return v a l — ;else return 0;class NSDemo {public static void Main() {// Здесь Count используется в качестве имени// вместо Counter.CountDown.Count cdl = new Count(10);int i;do {i = cdl.count();Console.Write(i + " " ) ;} while(i > 0 ) ;Console.WriteLine();Count cd2 = new Count(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();После того как имя Count было определено в качестве еще одного имени для составного имени Counter.CountDown, его можно использовать для объявления объектов класса CountDown без уточняющего указания пространства имен.

Характеристики

Тип файла
PDF-файл
Размер
24,15 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6458
Авторов
на СтудИзбе
304
Средний доход
с одного платного файла
Обучение Подробнее