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

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

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

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

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

Это может делать только сам класс Ргаитпд. Возможность создания экземпляров 1сетакот не имеет смысла ни для чего другого, кроме Ртаи1пд.деЬЕппвегасот. Вложенные классы, объявленные как рпЬ11с, позволяют создавать экземпляры коду, внешнему по отношению к охватывающему классу. Нотация обращения к вложенному классу подобна уточнению пространств имен.

В следующем примере демонстрируется создание экземпляра вложенного класса: 90 Глава 4 риЬ11с с1азз А ( рпЬ11с с1азз В ( ) ) Рпваас с1азэ ЕппгуРоап ( зсапгс чо1П Маго О ( А.В Ь = пеэ А.В() ) Иногда имя нового вложенного класса может скрыть имя члена внутри базового класса за счет использования ключевого слова пею подобно тому, нак это делается при сокрытии методов. Зто бывает очень редко, и в большинстве случаев данной ситуации можно избежать.

Рассмотрим следующий пример: РпЬ11с с1азз А ( рпЬ11с чо1П Гоо() ( ) ) рпЬ11с с1азз В: А ( рпЬ11с пеэ с1азз Гоо ) ) В этом случае вложенный класс Гоо определяется внутри определения класса В. Поскольку его имя совпадает с именем метода Гоо в классе А, вы обязаны применить ключевое слово пек, в противном случае компилятор сообщит о конфликте имен. Опять- таки, если возникает подобная ситуация, то это означает, скорее всего, что наступило время переосмыслить дизайн или просто переименовать вложенный класс, если только в намерения не входит действительное сокрытие базового члена. Сокрытие базовых членов подобным образом — сомнительное решение, которого обычно не стоит придерживаться лишь по той причине, что язык позволяет это.

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

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

Инденсатор возвратит этот тип объекта вызывающему коду. Затем указывается ключевое слово СЬ1з, за которым следует список параметров в квадратных скобках, что будет продемонстрировано в следующем примере. Классы, структуры и объекты 91 По сути, индексатор ведет себя как некий гибрид свойства и метода. В конце концов, "за кулисами" он представляет собой один из специальных методов, определяемых компилятором при объявлении индексатора. Концептуально индексатор подобен методу в том, что он может принимать набор параметров. Однако он также ведет себя и как свойство, поскольку для него объявляются средства доступа с использованием аналогичного синтаксиса. К индексаторам могут быть применены многие из тех же модификаторов, что применяются к методам. Например, индексаторы могут быть виртуальными, они могут переопределять базовый индексатор или же могут быть перегружены в зависимости от списка параметров — точно так же, как методы.

За списком параметров следует блок кода индексатора, который по синтаксису похож на блок кода свойства. Втавное отличие состоит в том, что средства доступа индексатора могут принимать списки переменных-параметров, в то время как средства доступа свойств не используют параметры. определяемые пользователем. Давайте добавим индексатор к объекту Огвытптт, чтобы посмотреть, как его использовать: свтпс Яувтеа.Со11есгтопвт риЬ11с аьвсгзсс с1авв Яеоыесгтсзиаре ( рсЬ1тс аЬвтгзсс то1т( Огви(); рсЬ11с с1авв Аестапя1е: яеоыетгтсяиаре ( рсЬ11с отегггбе тогб Огаи() ( Яувсеш.Сопвс1е.игтгеьгпе( УДЕСсапч1е.ргзи" )т ) ) рсЬ11с с1авв Стгс1е: Яеоаесгтсзиаре ( риЬ11с отеггтпе тто1С Огаи() ( яувгев.сопво1е.хгтгеьтпе( "с1гс1е.ргаи" )т ) ) ров[то с1авв Огаитпд ( рг1нзсе Аггауътвс зиаревт рсва[с Огви1пя() ( виарев = пеи Аггауътвт()т рсЬ11с апг Ссппг ( дес ( гегпгп вЬарез.Соппет ) рпЬ11с ПеошеегъсЯЬаре СЬЬв[ ьпг з.Ыех ) дес ( геепгп (паокесг1сяьаре) зьарев [апбех) т ) 92 Глава 4 рпЬ11с го1б Абб( Оеоаесгзсаьаре зьаре ) эьареэ.Абб( зьаре ); ) ) риЬ11с с1азэ Кпсгуэобпс ( згаг1с га)б Мазо() ( кесгапо1е гесгапо1е = пем Весгапо1е О; Сагс1е сбгс1е = пем С)гс1е()! Огам№пд бгам№пд = пем Огам№пд(); бгамбпО.Абб( гессапо1е ); бгамапд.Абб( сьгс1е ); гог( 1пэ 1 = О; 1 < бгам1пд.соипэ) ++1 ) ( Пеоэасгаевьаре зьаре бгамьпд [1); экаре.пгам(); Как видите, в методе Ма1п можно обращаться к элементам объекта Огамбпд, как если бы они находились в обычном массиве.

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

Следует отметить одно различие между реальным массивом и объектом, предоставленным индексатором. Передавать результат вызова индексатора на объекте в качестве опс- или ге1-параметра методу, как зто можно делать с реальным массивом, не разрешено. Аналогичное ограничение накладывается и на свойства.

Частичные классы Классы. объявленные как рагсаа1 (частичные), были нововведением С№ 2.0. До сих пор было показано, как определять классы в единственном файле. Это было обязательно в С№ 1.0. Тогда было невозможно разнести определение класса по нескольким файлам. Поначалу такое соглашение казалось неизбежным. В конце концов. если класс получается настолько большим, что становится трудно управляться с содержащим его файлом, это может служить признаком плохого дизайна. Но на самом деле главной причиной появления частичных классов стала необходимость поддержки инструментов для генерации кода. Обычно, когда вы работаете в (ВЕ-среде, она пытается помочь, генерируя некоторый код.

Например, при использовании средств АВО.А(ЕТ мастер генерирует полезные классы-наследники Оэгааею Классической проблемой при этом было ручное редактирование кода, сгенерированного инструментом. Редактировать такой код всегда опасно, поскольку в любой момент при изменении входных параметров инструмент повторно сгенерирует код, в результате чего потеряются все изменения. проведенные вручную. Понятно, что это нежелательно. Раньше единственным способом обойти эту проблему было применение некоторой формы повторного использования, такого как наследование или включение, т.е.

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

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

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