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

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

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

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

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

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

Частичные методы В С№ 3.0 ключевое слово рагг№а1 помимо частичных классов можно применять и для методов. Частичный метод — это просто метод, сигнатура которого объявляется в одной части частичного класса, а сам метод определяется в другой его части. Подобно частичным классам, частичные методы особенно полезны при работе с кодом, созданным мастерами и генераторами кода. Изящество частичных методов состоит в том, что если генератор создает объявление частичного метода в одной части класса, а вы не реализуете этот метод в другой его части, то такой метод просто не включается в результирующий собранный класс. Более того. любой код в сгенерированной части, вызывающий такой частичный метод, ничего не разрушит.

Этот метод вообще не будет вызываться. На частичные методы накладываются некоторые ограничения, необходимые для обеспечения упомянутого поведения. ° Частичные методы должны иметь тип возврата чо1ст. ° Частичные методы не могут принимать параметры оэг, но допускают параметры геЕ ° Частичные методы не могут быть ехгегпа1. ° Частичные методы не могут быть помечены как т№гкса1 и не могут быть декорированы модификаторами доступа, поскольку неявно они являются приватными.

° Частичные методы не могут быть помечены как зсас№с или сазаке'. ° Частичные методы могут быть обобщенными и могут быть декорированы ограниче- ниями, хотя повторение ограничений в объявлении реализации не обязательно. ° Частичные методы не могут вызываться делегатами, поскольку существование частичных методов в конечном скомпилированном коде не гарантируется. ' Тема написания небезопасного (ипэате) кода на С№ выходит за рамки настоящей книги, За дополнительной информацией обращайтесь к документации МЯЭттт. 94 Глава 4 Имея в виду все эти ограничения, давайте рассмотрим краткий пример частичных методов. Представим один частичный класс, который в данном примере является результатом работы некоторого генератора кода: роЬ11с рвггяа1 с1ввв Рзгаяопгсе ( /! Некоторые полезные методы рвггаз1 чогб КеяегЯоогсе(); ) Предположим, что этот класс РагаБопгсе, созданный генератором, представляет некоторую часть лежащего в основе хранилища данных, которое для удовлетворения требований дизайна должно иметь возможность периодически сбрасываться.

Вдобавок предположим, что шаги, необходимые для этого сброса источника данных, известны только тому, кто дополнит и использует потом этот частичный класс и реализует частичный метод. С учетом сказанного, возможное дополнение этого частичного класса его потребителем может выглядеть следующим образом: овады Буягеш) роЬ11с рвггьз1 с1ввв Рзгаяоогсе ( рвггга1 чоаб Кевегяоогсе() ( Сопяо1е.иг1ге11пе( "Источник сброшен" ) роваас чогб Кеяег() ( кеяегяоогсе()) роЬ11с с1аяв Рагггв1негпобя ( ягвгяс чо1б Нвап() ( Рягвяоогсе бв = пен Рагяяопгсе(); бя.кевег(); ) Как видите, чтобы в на1п можно было сбрасывать экземпляры РагаБоигсе, был добавлен общедоступный метод по имени Ревег. Это связано с тем, что метод КевегЯопгсе ненвно является приватным. Если вы просмотрите полученный в результате исполняемый код с помощью 1ЬВАВМ, то увидите в нем приватный метод РагаЯопгсе. кевегБопгсе, а если заглянете в Рагаяопгсе.

кевег, то увидите там вызов кеяегяопгсе. Если закомментировать или удалить частичную реализацию КеяегЯопгсе и перекомпилировать код, то 1ЬВАВМ покажет, что метод РагаБопгсе. КеяегЯопгсе вообще отсутствует, а вызов КеяегБопгсе внутри метода Кеяег просто удален. Статические классы В С() 2.0 появился новый модификатор классов, позволяющий указывать, что данный класс — не что иное, как коллекция статических членов, и создавать его экземпляры не разрешено.

Для этого к классу должен быть применен модификатор вгаггс. В таком случае на класс накладываются следующие ограничения. ° Класс не может наследоваться ни от чего кроме Я у я геш. ОЬ) есг, и даже если этот базовый тип не указан, наследование от него подразумевается.

° Класс не может использоваться в качестве базового для других классов. Классы, структуры и объекты 95 ° Класс может содержать только статические члены, которые могут быть общедоступными или приватными. Однако они не могут помечаться как ргогессес( или ргосессес( ъпсегпа1, поскольку класс не может служить базовым.

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

допускают создание их экземпляров. На заметку! По сути, объявление класса ягзгтс — Этс то жэ СамОЕ, чтО Объявление его явв1вс и эъяггвсг одновременно, но компилятор не позволит сделать это. Тем не менее, если просмотреть код Ц сгенерированный длл статического класса, легко заметить, что именно это компилятор и делает — те. статический класс е коде (Ь декорирован модификаторами аьвтгаст и веа1егъ Ниже приведен пример статического класса: овалу Яувсев; риъъъс ясак(с с1аяя ЯгастсС1ввв риъъъс ягвгтс но1о Ооыоги() ( ++са11Соэпсп Сопво1е. Нггсеъапе ( "Ясасъсс1аяв. ооиоги ()" ) ) рсЬ11с с1звв НевгеоС1авв ( риътьс МезсеОС1аяя() ( Сопво1е.нгътеьъпе( "Неясет(01аяя.ыезгеОС1авя()" ) ) ргьчаге вгягъс 1опо са11соипг = 0; роЬ11с вгзс1с 1опо Са11Соопг ( оес ( гесогп са11Соопъч ) ) роЬ11с ясзс1с с1аяя ЯпсгуРоапс ( всасъс чоъс Маъп() ( ЯсвсъсС1авв.ооиоги()) О так поступать нельзя! О ЯгагъсС1вяв оЬ) = лен ЯсасьсС1явз() ЯсасьсС1авя.ыевгеОС1звв пеясед = пен ЯтасьсС1авв.неясеОС1аяя(); Сопво1в.ыгъсеъгпе( "Са11Соипг = (О)", ЯсасьсС1авв.Са11Соопг ); Тип ЯсагьсС1аяя содержит метод, поле, свойство и вложенный класс.

Обратите внимание, что поскольку ыея се с(с 1 а я я не объявлен как я т атас, можно создавать его экземпляры. К тому же, из-эа того, что класс япггуроапг просто содержит метод ма1п, он также помечен как ягасъс, чтобы предотвратить непреднамеренное создание его экземпляров. 96 Глава ч Статические классы удобны, когда необходим логический механизм организации набора методов. Примером статического класса из библиотеки базовых классов (Вазе С!аэз ЫЬгагу) может служить знаменитый класс 5 у все.

С оп з о1е. Он поддерживает методы. свойства и события, которые все являются статическими, так как в один и тот же момент времени к процессу может быть присоединена только одна консоль. Шаблон 81пд1е1оп Возможно, наиболее популярным шаблоном проектирования является 8!пц!е1оп (Одиночка), который обычно моделирует ситуацию, когда можно иметь только один экземпляр класса в единицу времени. Исторически сложилось так, что шаблон 8!пц!е1оп реализуется с помощью приватного конструктора и статического метода под названием вроде Бег1пзсапсе, который возвращает ссылку на единственный допустимый работающий экземпляр. Хотя данный подход можно применять в СЛ, все же статический класс предлагает лучшее средство реализации шаблона 8!пц!е!оп, что доказывает пример применения Бузгелт.

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

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