Главная » Просмотр файлов » Г. Шилдт - С#4.0 Полное руководство

Г. Шилдт - С#4.0 Полное руководство (1160795), страница 138

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

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

Небезопасный код, указатели, обнуляемые типы и разные ю)ючевые слова 707 Как видите, в данной программе сначала динамически загружается библиотека ЫуС1авз . с(11, а затем используется рефлексия для построения объекта класса 01чВу. Построенный объект присваивается далее переменной оЬ) типа с)упаш1с. А раз так, то методы 1вбйчну() и 1зЕчеп () могут быть вызваны для переменной оЬ0 по имени, а не с помощью метода 1пчоке () . В данном примере это вполне допустимо, поскольку переменная оьб на самом деле ссылается на объект класса Рзчву.

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

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

И поскольку тип Вупатзс компилируется в тип оЬб еох для целей перегрузки, то оба типа Вулашьс и оЬ) ест расцениваются как одно и то же. Поэтому при компиляции двух следующих перегружаемых методов возникнет ошибка. зсагьс чо1г) Г(оЬ)есс ч) ( )) ... ) зсагьс чо1г) Г(суаашьс ч) ( Ху ... ) /Г Ошибка! И последнее замечание: тип с(упат1с поддерживается компонентом Р1К (Рупапцс Еапяцаяе Нип(ппе — Средство создания динамических языков во время выполнения), внедренным в .НЕТ 4.0. Возможность взаимодействия с моделью СОМ В версии С№ 4.0 внедрены средства, упрощающие возможность взаимодействия с неуправляемым кодом, определяемым моделью компонентных объектов (СОМ) и применяемым, в частности, в СОМ-объекте О(Все Аи(оша((оп.

Некоторые из этих средств, в том числе тип бупашбс, именованные и необязательные свойства, пригодны для применения помимо возможности взаимодействия с моделью СОМ. Тема модели СОМ вообще и СОМ-объекта ОЫ(се Аи(ошабоп в частности весьма обширна, а порой и довольно сложна, чтобы обсуждать ее в этой книге. Поэтому возможность взаимодействия с моделью СОМ выходит за рамки данной книги.

Тем не менее две особенности, имеющие отношение к возможности взаимодействия с моделью СОМ, заслуживают краткого рассмотрения в этом разделе. Первая из них состоит в применении индексированных свойств, а вторая — в возможности передавать аргументы значения тем СОМ-методам, которым требуется ссылка. Как вам должно быть уже известно, в С№ свойство обычно связывается только с одним значением с помощью одного из аксессоров дес или зес. Но совсем иначе дело обстоит со свойствами модели СОМ.

Поэтому, начиная с версии С№ 4.0, в качестве выхода из этого затруднительного положения во время работы с СОМ-объектом появилась возможность пользоваться индексированным свойством для доступа к СОМ-свойству, имеющему несколько параметров. С этой целью имя свойства индексируется, почти так же, как это делается с помощью индексатора. Допустим, что имеется объект шух?.Арр, который относится к типу м1сгозо№с. ОГ((се. 1пге гор. ехес1.

Арр11сасзоп. 708 часть !. язык С№ В прошлом для установки строкового значения ")Зк" в ячейках С! — СЗ электронной таблицы Ехсе! можно было бы воспользоваться оператором, аналогичным следующему. пухьарр.сег Рапде)"С1", "СЗ").зег уа1ие)туре.н1зв1ад, "ОК")) В этой строке кода интервал ячеек электронной таблицы получается при вызове метода дес Капуе (), для чего достаточно указать начало и конец интервала. А значения задаются при вызове метода зес уа1пе (), для чего достаточно указать тип (что не обязательно) и конкретное значение. В этих методах используются свойства Каще и уа1ие, поскольку у обоих свойств имеются два параметра.

Поэтому в прошлом к ним нельзя было обращаться как к свойствам, но приходилось пользоваться упомянутыми выше методами. Кроме того, аргумент Туре. М№ззьпд служил в качестве обычного заполнителя, которыи передавался для указания на тип, используемый по умолчанию. Но, начиная с версии СФ 4.0, появилась возможно переписать приведенный выше оператор, приведя его к следующей более удобной форме. гухъарр.каасе!"С1", "СЗ").уа1ае = "ОК"; В этом случае значения интервала ячеек электронной таблицы передаются сиспользованием синтаксиса индексаторов, а заполнитель Туре.

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

Дружественные сборки Одну сборку можно сделать дружесгявен ной по отношению к другой. Такой сборке доступны закрытые члены дружественной ей сборки. Благодаря этому средству становится возможным коллективное использование членов выбранных сборок, причем эти члены не нужно делать открытыми. Для того чтобы объявить дружественную сборку, необходимо воспользоваться атрибутом 1псегпа1зг)1з1)з1ето. Разные ключевые слова В заключение этой главы в частности и всей части 1 вообще будут вкратце представлены ключевые слова, определенные в СФ и не упоминавшиеся в предыдущих главах данной книги. Ключевое слов 1ос)с Ключевое слово 1осх используется при создании многопоточных йрограмм.

Подробнее оно рассматривается в главе 23, где речь пойдет о многопоточном программировании. Но ради полноты изложения ниже приведено краткое описание этого ключевого слова. Глава 20. Небезопасный код, указатели, обнуляемые типы и разные ключевые слова 709 Программа на СФ может состоять из нескольких логпоков исполнения. В этом случае программа считается многопоточнои, и отдельные ее части выполняются параллельно, т.е.

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

Ниже приведена общая форма этого ключевого слова: 1 сх(пвб) ( О критический раздел кода где о)зп' обозначает объект, для которого согласуется блокировка кода. Если один поток уже вошел в критический раздел кода, то второму потоку придется ждать до тех пор, пока первый поток не выйдет из данного критического раздела кода. Когда же первый поток покидает критический раздел кода, блокировка снимается и предоставляется второму потоку. С этого момента второй поток может выполнять критический раздел кода. ПРИМЕЧАНИЕ Более подробно ключевое слово 1осК рассматривается в главе 23.

Ключевое слово ~еас1оп1у Отдельное поле можно сделать доступным в классе только для чтения, объявив его как геаг(оп1у. Значение такого поля можно установить только с помощью инициализатора, когда оно объявляется или же когда ему присваивается значение в конструкторе. После того как значение доступного только для чтения поля будет установлено, оно не подлежит изменению за пределами конструктора.

Следовательно, поле типа геаооп1у удобно для установки фиксированного значения с помощью конструктора. Такое поле можно, например, использовать для обозначения размера массива, который часто используется в программе. Допускаются как статические, так и нестатические поля типа геас(оп1у. ПРИМЕЧАНИЕ Несмотря на кажущееся сходство, поля типа геаг(оп1у не следует путать с полями типа сопят, которые рассматриваются далее в этой главе. Ниже приведен пример применения поля с ключевым словом геас(оп1у.

О Продемонстрировать применение поля с ключевым словом геаг)оп1у. нвьпд Яуясеиг с1анв НуС1аяв ( рнь11с ягаг1с геаг(оп1у 1пг З12Е = 10; ) 710 Часть (. Язык С() с1ава Оешокеабоп1у ( вгаС1с уотс( Мати() ( тпС[] аооссе = пен 1пС[МуС1авв.зтгЕ]; ьпС[] Сасчет = пен ьпС[нус1авв.зтгЕ]; Присвоить рнд значений элементам массива вопссе. =О; 1 < Мустава.зтгв; ть+) вопссе[1] = 1' Госеась(гпс с та воассе) Сопво1е.истое(1 + " "); Сопво1е.нс1Сеътпе(); // Перенести обращенную копию массива вооссе в массив Сассео. тос(тпС 1 = МУС1авв.зтгЕ-1, 1 = 0; 1 > 0; 1 †, 1++) СасЧеС[]] = вооссе[1]; тосеасп(1пС 1 тп СасЧеС) Сопво1е.нп.те(с + " "): Сопво1е.нсстеЬьпе() // МуС1аав.Я12Е = 100; // Ошибка!!! Не подлежит изменению! ) ) В данном примере поле МуС1азз .

Я12Е инициализируется значением 10. После этого его можно использовать, но не изменять. Для того чтобы убедиться в этом, удалите символы комментарии в начале последней строки приведенного выше кода и попробуйте скомпилировать его. В итоге вы получите сообщение об ошибке. К)1]0ЧВВ(в(В 0(10ВВ йоПВ ~ Я тто1еь с..ьа.Е Ключевое слово, или модификатор, сон в с служит для объявления полей и локальных переменных, которые нельзя изменять.

Исходные значения таких полей и переменных должны устанавливаться при их объявлении. Следовательно, переменная с модификатором сопзС, по существу, является константой. Например, в следующей строке кода: сопвС 1пС 1 = 10~ создается переменная 1 типа сопят и устанавливается ее значение 10.

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

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

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

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