Главная » Просмотр файлов » Нэш Трей - C# 2010. Ускоренный курс для профессионалов (2010)

Нэш Трей - C# 2010. Ускоренный курс для профессионалов (2010) (1160865), страница 14

Файл №1160865 Нэш Трей - C# 2010. Ускоренный курс для профессионалов (2010) (Нэш Трей - C# 2010. Ускоренный курс для профессионалов (2010)) 14 страницаНэш Трей - C# 2010. Ускоренный курс для профессионалов (2010) (1160865) страница 142019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

С применением типов коллекций обычно создаются такие вещи, как списки, очереди и стеки. Типы коллекций, существующие со времен .)чЕТ 1.0, предназначены для хранения любых типов в СЬК, поскольку они содержат экземпляры ОЬ) еос и все, что наследуется от Оь) есс. Однако при этом вся информация о конкретном типе элементов коллекции отбрасывается, и все умение компилятора отлавливать ошибки типа оказывается непригодным. Ссылку типа, полученную из этой коллекции. можно приводить к любому другому типу, который, по идее, должен иметь элемент, а это может привести к сбою во время выполнения.

К тому же первоначальные типы коллекций могут содержать произвольную смесь типов элементов вместо того, чтобы принуждать пользователя в коллекцию вставлять только экземпляры определенного типа. Можно попробовать решить эту проблему, разработав собственные типы, такие как 11вкОЕ1пседегя и 11всогясгзпдя, для каждого типа, который планируется хранить в коллекции. Однако очень скоро обнаружится, что большая часть управляемого кода таких списков будет похожей, или обобщенной, независимо от типа хранимых элементов.

Ключевым понятием здесь является обобщенный. Появляется возможность объявить открытый (или обобщенный) тип и написать общий код лишь однажды. Пользователь этого типа может затем указать, какой тип элементов будет содержать коллекция, прямо в точке, где он решит использовать ее. Вдобавок применение обобщений сулит выигрыш в эффективности.

Концепция обобщений настолько обширна, что их объявлению и использованию посвящена целая глава 11. Однако полезно почувствовать вкус к применению обобщенных типов уже сейчас, поскольку до главы 11 они будут упоминаться далеко не раз.

Ка заметку! Синтаксис обобщений покажется знакомым тем, кто применял шаблоны С++. Однако важно отметить, что между ними и обобщениями С№ есть существенные отличия в поведении, о чем подробно рассказывается в главе ((. Наиболее распространенное применение обобщений касается объявления типов коллекций. Например, рассмотрим следующий код: пя1пч Яуякелп пвгг 9 Яувкеа.со11ес11опв.оепягасг овупо Яуякеи.Сс11ескуопв.ОЪ)ессмооя1; с1авв Епкгуго1пс ясасзс чо1п Мазп() ( Со11ессуоп<зпс> ппл1Ьегв = пен Сс11есг1оп<1пк> О; пшлЬегв.лг)г)( 42 ); ппяпегв.лпп'( 409 ); сс11есстсп<ясгзпо> всгзпчя = пен Со11есгусп<вкгзпо>()г якг1пов.АгЫ ( Гасе" ); ясг1пчв.л<Ы( "ВоЬ" )г со11ескзоп< со11ессзсп<зпк» со1мпаьегв = пен Со11ескзоп<Со11ессзсп<зпк»(); сс1кпкпегв.лог(( пшлЬегв ); 111як<зпг> СпекшпЬегв = пшвЬегяг гогеасп( 1пк 1 1п Спеноэпегв ) ( Сопяо1е.нгзсеъзпе( 1 )4 ) Обзор синтаксиса С№ 53 В этом примере продемонстрировано использование обобщенного типа со11есгьоп.

На это указывают угловые скобки, окружающие нмя типа. В данном случае объявлена коллекция целых чисел, коллекция строк и, чтобы продемонстрировать более сложное применение обобщений — коллекция коллекций целых чисел. Кроме того. обратите внимание на объявление обобщенного интерфейса, а именно — 111зг<>. Когда задается аргумент-тип для обобщенного типа с указанием его в фигурных скобках, как в случае Со11есгзоп<1пе>, тем самым объявляется закрытый тип. В этом случае со11ессаоп<1пс> принимает только один параметр типа, но если бы он принимал больше, то их следовало бы разделить запятыми.

Когда СЬК впервые встречает такое объявление типа, то генерирует закрытый тип на основе данного обобщенного типа и применяет аргументы типа. Применение закрытого типа, сформированного подобным образом, ничем не отличается от использования любого другого типа, за исключением того, что в объявлении типа применяется специальный синтаксис угловых скобок для формирования закрытого типа. Теперь, ознакомившись в общих чертах с тем, как выглядят обобщения, вы должны быть готовыми к восприятию эпизодических применений обобщений, которые будут встречаться до главы 11. Пространства имен Язык С№, подобно С++ и аналогично пакетам дача, поддерживает пространства имен для логического группирования компонентов.

Пространства имен помогают избежать конфликтов имен между идентификаторами. С помощью пространств имен можно определять все типы так, чтобы их идентификаторы квалифицировались пространством имен, к которому они принадлежат. Вы уже видели пространства имен в действии во многих примерах, приведенных до сих пор. Так, в примере "Нейе йтог!б!" из главы 1 использовался класс Сопзо1е, который находится в пространстве имен Бузсев библиотеки классов .НЕТ Ргшпежогрц полное квалифицированное имя этого класса выглядит как Бузсегк.сопзо1е. Для организации компонентов можно создавать собственные пространства имен. Общая рекомендация звучит так: для наименования пространства имен верхнего уровня используйте некоторый общий идентификатор, например, название организации, а для вложенных пространств имен подойдут более специфичные идентификаторы библиотек.

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

Н№г!се се, и поместить в него наиболее широко применяемые типы графических элементов управления. Затем можно создать пространство имен Нусоврапу. И1г!дега. Лб тапсегг, куда поместить менее часто используемые, но более сложные типы. Рааумеется, все они могут быть помещены в одно и то же пространство имен. Однако пользователи могут запутаться, просматривая типы и обнаруживая, что редко применяемые типы перемешаны с часто используемыми.

На заметку! При выборе названия для пространства имен общая рекомендация состоит в том, чтобы название следовало форме <имякомпании>. <Технология>. *, те,, чтобы первые две части имени, разделенные точкой, начинались с названий компании и технологии, Тогда появится возможность развивать классификацию пространств имен дальше.

Примеры можно найти в .Нет Ггаглеаогк — скажем, пространство имен к№сгоэогс. нзп32. 54 Глава 3 Определение пространств имен Синтаксис объявления пространства имен прост. В следующем коде демонстрируется объявление пространства имен Асме: патеврасе Аспе ) с1авв ОС111ку )) ) Пространства имен не обязательно должны ограничиваться единственной единицей компиляции (т.е. файлом исходного кода Са).

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

Объявления пространств имен можно вкладывать друг в друга. Это можно делать одним из двух способов. Первый способ очевиден: пааеврасе Асгхе павеврасе ОС111Г1ев ( с1авв Яотепк111ку )) ) ) В таком случае для доступа к классу Яолге))с Ш.су должно использоваться его полное имя, те. Асгве.))г111съез. Боке))с111гу, ниже показан альтернативный способ определения вложенных пространств имен: пваеврасе Авве ) патеврасе Асае.ОС111С1ев ( с1авв Боверк111су () ) Эффект от этого кода будет точно таким же, как от предыдущего.

Фактически первое пустое объявление пространства имен Асме можно опустить. Оно оставлено только для демонстрационных целей, чтобы показать, что объявление пространства УС111С).е з не является физически вложенным в объявление пространства имен Асгве. Любые типы, которые объявляются вне пространства имен, становятся частью глобального пространства имен. На заметку! Определения типов в глобальном пространстве имен всегда следует избегать. Такая практика известна как "засорение глобального пространства имен" и считается дурным тоном в программировании.

Это должно быть очевидным, поскольку в данном случае нет возможности защитить типы, определенные в разных местах, от потенциальных конфликтов имен. Обзор синтаксиса С№ 55 Использование пространств имен В примере "НеБо %ог)6(" из главы 1 были слегка затронуты варианты, доступные при использовании пространств имен. Давайте рассмотрим некоторый код, в котором используется класс БомеОСШСу, определенный в предыдущем разделе: рпЬ11с с1ввв ЕпггуроапС ( вгвг№с чозб Мввп() ( Аске.СС111С1ев.зокеог111гу пС11 = пеи Асье.ок111с1ев.зокеее111гу О ) ) Практика применения всегда полностью квалифицированных имен довольно многословна и в конечном итоге может привести к тяжелому случаю кисгевого туннельного синдрома.

Директива ывапо пространств имен позволяет избежать этого. Она сообщает компилятору, что используется все пространство имен единицы компиляции или другое пространство имен, Ключевое слово пв1пд эффективно импортирует все имена иэ заданного пространства имен в окружающее пространство имен, которым может быть глобальное пространство данной единицы компиляции. Это демонстрируется в следующем примере: пв1пс Аске.ЬС111С1ев; рпЬ11с с1явв Епггуро1пг ( вкяк1с товб Мвтп() ( яоаесс111су пс11 = пен яотесс111су () т ) ) Теперь иметь дело с кодом намного проще, и в некотором отношении его легче читать.

Директива пв1пд, находясь на уровне глобального пространства имен, импортирует имена типов иэ Аске. ()с111с1ев в глобальное пространство. Иногда при импорте нескольких пространств имен могут возникать конфликты имен в пространствах, содержащих одноименные типы. В таком случае можно импортировать индивидуальные типы иэ пространства, создавая псевдонимы имен. Такая техника доступна благодаря средству псевдонимов с№. Давайте модифицируем использование класса яоме()с111су, снабдив псевдонимом только этот класс, а не все содержимое пространства имен Асне. ОС111С№ев: пакеврасе Асае.СС111с1ез ( с1аяя Апогпегое111Су() () ) ивапд яокесс111су = Аске.ьс111с1ев.яокерс111сут риЪ11с с1ввв ЕпггуРо1пг ( вгввтс чо1с) Маап() ( Бокеое11№гу ип11 = пеи ЯотеСС111гу () т Аспе.ЬС111С1ев.лпоспегог111ку = пеи Аске.ЬС111С1ев.лпогпегсг111СУ О ) ) В этом коде идентификатор яотебс111су является псевдонимом Аспе.рс111сзев. яотеус111су.

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

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

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

Нэш Трей - C# 2010
Accelerated_C_2010-4565
3_syntax_overview
3_generics_1.cs
as_1.cs
boxing.cs
conversions_1.cs
implicit_type_1.cs
is_1.cs
references_1.cs
references_2.cs
references_3.cs
values_1.cs
4_classes_structs
4_abstract_classes_1.cs
4_beforefieldinit_1.cs
4_box_1.cs
4_box_2.cs
4_box_3.cs
4_box_4.cs
4_box_5.cs
4_class_definition_1.cs
4_compareto_1.cs
4_containment_example_1.cs
4_containment_example_2.cs
4_containment_example_3.cs
4_ctor_struct_1.cs
4_ctor_struct_2.cs
4_ctor_struct_3.cs
4_destructor_1.cs
4_destructor_2.cs
Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7056
Авторов
на СтудИзбе
258
Средний доход
с одного платного файла
Обучение Подробнее