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

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

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

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

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

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

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

66 Глава 4 с1аяя Пегтчеб: Вазе ( роЬ11с Вег1чеб( Япт а ) :Ьаяе( в ) // вызов конструктора базового класса ( ) Методы Метод определяет процедуру, которую можно выполнить над объектом или классом. Если метод является методом экземпляра, то его можно вызывать на объекте. Если же метод спкппыческиб. его можно вызывать только на классе. Отличие между ними в том, что метод экземпляра имеет доступ и к полям экземпляра объекта, и к статическим полям класса, в то время как статический метод не имеет доступа к полям и методам экземпляра. Статические методы могут иметь доступ только к статическим членам класса.

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

Статические методы Статические методы вызываются на всем классе, а не на его экземплярах. Статические методы имеют доступ только к статическим членам класса. Такие методы объявляются с применением модификатора згасус, как показано в следующем примере: роЬ11с с1взя А роватс ятаСЯс чо1б Яозеропст1оп О ( Буяоез.бопяо1е.игттеЬ1пе( "Вызван метод БозеГопсттоп()" ); ) ягагтс чотб Маап() ( А.яотеГппсстоп()) БозеГопсптоп(); ) Обратите внимание, что оба метода в этом примере являются статическими. В методе ма1п сначала вызывается метод яоверопсс1оп с указанием имени класса.

После этого вызывается статический метод без указания имени класса. Причина в том, что методы мвтп и яонеГопсс1оп определены в одном и том же классе и оба являются статическими. Если бы метод Яоаерппст1оп относился к другому классу, скажем, В, на этот метод пришлось бы ссылаться следующим образом: В. Яоверопссаоп. Методы экземпляра Методы экземпляра работают с объектами. Для того чтобы вызвать метод экземпляра, необходимо сослаться на экземпляр класса, определяющего этот метод. В следующем примере демонстрируется применение метода экземпляра: Классы, структуры и объекты 6 т рпЪ1гс с1яяя А ( ргтнзке ного Яошебрегасгоп() ( х=1; ГЬгя.у = 21 г = Зт // присвяияяиие СЬгя з объектах является ошибкой // А пеигпякапсе = пеи А()т // сная = пеигпягяпсет ) ргтняте гпт хт рг1няке гпк ут рг1няге ягяггс гпг ят ясясгс ногб Магп() ( А оЬЯ = пеи А() т оЬЯ.Яошебрегяггоп()т Яуятеш.Сопяо1е.нг1ке11пе( "х = (0), у = (1), Я= (2)", оЬ).х, оЬ).у, А.г )т ) ) В методе Магп создается новый экземпляр класса А и затем вызывается метод Яошебрегяг1оп через экземпляр этого класса.

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

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

С точки зрения клиента объекта свойство выглядит и ведет себя аналогично общедоступному полю. Нотация доступа к свойству такая же, как при доступе к общедоступному полю экземпляра. Однако свойство не имеет никакого ассоциированного с ним места хранения в объекте, как это присуще полям. Вместо этого свойство представляет собой сокращенную нотацию для определения средстпв доапупа (ассеяяогз) для чтения и записи полей. Типичный шаблон предусматривает обеспечение доступа к приватному полю класса через общедоступное свойство. В СФ 3.0 эта задача еще более облегчается за счет введения автореализуемых (анто-Нпр(ешептед) свойств.

Свойства существенно расширяют возможности проектировщиков классов. Например, если свойство представляет количество строк в объекте — таблице базы 68 Глава 4 данных, то этот объект может отложить вычисление этого значения до тех пор, пока оно не будет опрошено свойством. Объект таблицы базы данных узнает, ногда необходимо вычислить значение, по факту вызова клиентом средства доступа для обращения к свойству.

Объввление свойств Синтаксис объявления свойств очень прост. Как и большинство членов класса, свойства допускают присоединение к ним атрибутов метаданных. Некоторые модификаторы, применимые к свойствам, подобны модификаторам методов.

Другие модификаторы включают способность объявлять свойство кан ч1гсиа1, яеа1ет(, очегт1г)е, аЬясгасс и тд. Все это подробно рассматривается далее в разделе "Наследование и виртуальные методы" настоящей главы. В следующем коде определяется свойство Теврета Гите в классе А: риЬ11с с1аяя А ( ргучасе тпт гепрегатиге; риЬ11с гпс Тевретатите ( яег ( Яуятеп.Сопяа1е.яг1те11пе( "Извлечение значения Гепретасиге" ); тегигп гепретагите1 ) яег ( Яуясеп.Сопяа1е.нт1те(гпе( "Установка значения Гепрегатите" ); Гепрегасиге = ча1ие; ) ) риЬ1тс с1а*я МаупС1аяя ( ятат1с чоуи Матп() ( А оЬ) = пен А(); оЬ).тепретасиге = 1; Яуятеп.сопяо1е.кт1те11пе( "оЬ).тепретасиге = (0)", оь).тепрегагите ) 1 Сначала определяется свойство по имени Тепретасите, имеющее тип Тпс.

Каждое объявление свойства должно определять тип, представляемый этим свойством. Этот тип должен быть видимым компилятору в точке, где свойство объявлено в нлассе. и он должен иметь как минимум ту же видимость, что и определяемое свойство. То есть имеется в виду, что если свойство является общедоступным (риЬ11с), то тип значения, представленного свойством, также должен быть объявлен как риЬ1).с в сборке, в которой он определен. В данном примере тип 1пс — это псевдоним для я уз сев. 1пс 32. Этот класс определен в пространстве имен яуясеп, и он объявлен как риЬ11с. Поэтому ).пс можно использовать в качестве типа свойства в данном общедоступном классе А.

Свойство Тепретасиге просто возвращает приватное поле Гепрегасите из внутреннего состояния экземпляра объекта. Это — общепринятое соглашение. Приватному Классы, структуры и объекты 69 полю назначается имя, начинающееся с прописной буквы, а свойству — имя, начинающееся с заглавной буквы. Разумеется, следовать этому соглашению вовсе не обязательно, но нет причин от него отказываться, к тому же другие программисты Ся обычно ожидают его соблюдения. На заметку! Не беспокойтесь, если вам покахется, что для одного лишь представления значения поля в виде свойства необходимо набирать настолько много кода.

Команда разработчиков С» учла зто и добавила в версию СВ 3.0 автореализуемые свойства, которые кратко рассматриваются в разделе "Явтореализуемые свойства" далее в главе. Средства доступа В предыдущем примере внутри блока свойства находятся еще два блока кода. Это средства доступа [ассеввогз) к свойству, и внутри их блоков помещается код, который читает и записывает значение свойства. Как видите, один из них называется оег, а другой — зег. По их названиям несложно понять, какой блок за что отвечает. Блок пег вызывается, когда клиент объекта читает свойство. Как и можно было ожидать, это средство доступа должно возвращать значение или ссылку на объект, соответствующий типу объявления свойства.

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

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