я правильно понимаю, что объекты, реализующие интерфейс I D is p o s a b le , используются только внутри оператора u s in g ? ^ ! Да. Интерфейс ID is p o s a b le предназначен для работы с оператором u s in g , и добавление этого оператора эквивалентно созданию экземпляра класса, только тут всегда вызывается метод Dispose{). Любой ли оператор может быть Iомещен в блок u s in g ? ^ ! Разумеется. Оператор u s in g всего лишь гарантирует уничтожение любого созданного вами объекга. Но использовать эти объекгы вы можете на свое усмотрение. Можно даже создать объект при помощи оператора u s in g и не упоминать его внутри блока. Впрочем, это не имеет практического смысла. часацо ^ а Д а Б а е М ы е Б о ц р о с ь ! Может ли метод быть вызван D is p o s e О вне оператора u s in g ? Q ; Конечно. На самом деле в этом случае оператор using вообще не нужен. Вызывайте метод Dispose (), завершив работу с объектом. Он высвободит указанные ресурсы, как и при вызове вручную метода Close {) для потока. Оператор using всего лишь облетает чтение и понимание кода и предотвращает проблемы, которые могуг возникнуть, если не удалить объект. !)• Вы упомянули блок t r y / f i n a l l y , значает ли это, что операторы t r y и f i n a l l y могут фигурировать без оператора c a tc h ? О! Да! Вы можете скомбинировать ж try непосредственно с блоком finally, как показано здесь: обработка исключений try { DoSomethingRiskyО ; SomethingElseRisky(); } finally { AlwaysExecuteThis{); } При обнаружении исключения в методе DoSomethingRisky О немедленно будет запущен блок f inal 1у. Правда ли, что метод D is p o s e О работает только с файлами и потоками? О ; Нет, многие классы реализуют интерфейс IDisposable, и при работе с ними всегда нужно использовать оператор using. (С некоторыми из этих классов вы познакомитесь в следующей главе.) Если вы пишете класс, который нужно утилизировать определенным способом, таюке реализуйте интерфейс IDisposable. Если блоки try/catch — это такой полезный инструмент, почему он не используется по умолчанию, а нам приходится вводить код вручную? Сначала нужно определить тип появляющегося исключения, чтобы правильно его обработать. Ведь обработка исключений не сводится к выводу стандартного сообщения об ошибке. Скажем, в программе для поиска оправданий, зная о появлении исключения FileNotFoundException, можно вывести сообщение с советом, где искать нужные файлы. А в случае исключений, связанных с базами данных, можно по электронной почте отправить сообщение администратору. Так что все ваши действия зависят от типа обнаруженного исключения. Именно поэтому так много классов наследуют от^класса Exception. Порой вам даже приходится писать такие классы самостоятельно. дальше * 483
упущенные возможности Hauxyguiuu бариант блока catch Блок c a tc h позволяет программе продолжить работу. Появившееся исключение обрабатывается и вместо аварийной остановки и сообщения об ошибке вы двигаетесь дальше. Но это не всегда хорошо. Рассмотрим странно работающий класс C a lc u la to r . Что же происходит? c l a s s C a lc u la t o r { p i i b l i c v o id D iv id e ( i n t d iv i d e n d , i n t d i v i s o r ) { t r y { Если делитель равен нулю, появляется исключение^ - pivdeB yZeroE xception. t h i s . q u o t i e n t = d iv id e n d / d i v i s o r ; } catch { — "■ I I Примечание Джима: нужно п о н я т ь , как п р ед о т в р а т и т ь в в од Почему несмот ря на наличие олока catch мы получаем с о - оощение об ошибке? / / п ол ь зовател я ош н у л е в о г о зн а ч ен и я в д е л и т е л ь . 11сЬючения дод)кны обрабатываться, а не скрываться П рограм м ист подум ал, что смож ет скрыть исключения при помощи пуст ого блока catch, но всего лишь создал проблем у пользоват елям програм м ы . Тот факт, что программа продолжает работу, не означает обработки исключений. Написанный выше код не будет аварийно остановлен... по крайней мере, не в методе D iv id e (). Но что если этот метод вызывается другим методом, который пытается вывести результат? При равенстве делителя нулю, метод, скорее всего, вернет неправильное (и неожиданное) значение. Нужно не просто добавить комментарий, а обработать исключение. Даже если вы не знаете, что делать, не остаеляйте блок catch пустым или закомментированным! Это лишь усложняет пользование программой. Лучше пусть появится сообщение об исключении, это хотя бы позволяет понять, что именно работает не так. Помните, что если исключение не обрабатывается,, оно поднимается вверк в стеке вызовов. Это тоже своего рода обработка. 484 глава 10
Изучаем Управляй д
ББК 32.973.2-018.1 УДК 004.43
оглавление Оо д е р
оглавление э щ о Бс
оглавление гоипь! и
оглавление н а с л е
оглавление п е р е ч
оглавление обр>або
оглавление и т1реДБ
оглавление Метод з
к а к р а б о з з а а ш
введение Mbl знаем, о
введение Метапозна
Что мо)кете сделать
введение информаци
введение Благодарн
с c# это легко Зачем
помогите начальник
ваша цель Ч т о мы с
приступим Э то Вы д
изучи ИСР Возьми в
лучше один раз увид
экономим ресурсы Vis
запуск приложения (
сохраните, чтобы по
хранить данные лег
оформим в таблицу П
это именно мой тип
добавляем данные П
все данные в одном
соединим все вмест
сделаем красиво Хо
напоследок Тестиро
поделитесь любовью
быстрее не бывает У
к вашим услугам Ког
средства коммуника
ваш маленький помо
подробности Любые
программа делает з
еще более подробно
элегантные решения
время получить отв
решение упражнения
параметры могут ва
операторы наготове
прекратим ошибки! О
приготовились, нас
то, что вы можете сд
выше и выше и выше и
если только, но тол
ваш код... теперь в в
симпатично! п'ражне
решение упражнения
это не такой просто
решение ребуса е Ш
майк ищет работу Ч
создаем методы и ре
знакомство с объек
про экземпляры Объ
объекты совершенст
немножко маленьких
слово static |Л о зьм и
как дела у объектов
складываем объекты
зачем нужны методы
классы как они есть
несколько советов
создадим класс Воз
работающий класс guy
джо говорит: «где м
объекты, по порядку
объекты, по порядку
объекты, по порядку
не мои тип Tun переме
взять деньги на мор
приведения Приведе
настоящее преобраз
таблица зарезервир
что-то пошло не так.
операторы наготове
получи ссылку Пере
вот водитель мусор
так много меток їоз
Возьми 8 руку каран
держи ссылку Дбе сс
выбираем объект из
джо говорит: «не ст
болтливые объекты
возьми в руку каран
магниты с кодом и р
создадим что-нибуд
ключ к прекрасной и
решение упражнения
решение ребуса е Ш
помогите кэтлин Кэ
ok, нет проблем нени
решение упражнения
что-то пошло не так
неожиданно оказало
защити свои объект
шпионское противос
сохранить секрет З
простор для вообра
путаница у майка Пр
как лучше провести
читаем, записываем,
частная собственно
настройки Редактир
разбираем конструк
что в имени? r|Jo3bM H В
инкапсуляция предо
решение упражнения
с днем рождения, кр
другой тип вечерин
кэтлин это понрави
закончим создание
работает! О ТТрогро
не тратьте золото,
прогуляємся в джун
программистов не к
расширяем объекты
как низко вы можете
я знаю, как застави
перекрытие вручную
немного практики с
немного практики А
они вам и в самом де
скры т ь и обнаружи
так вот зачем нуж н
обходнойпуть Ключе
кэтлин все еще нужн
решение упражнения
отличная работа! —
помоги пчелиной ма
решение упражнения
все мы только пчелы
решение упражнения
все мы только пчелы
рабочие пчелы, объе
интерфейсы для раб
.ласс немного от сб
поваляем дурака Уч
интерфейсы не созд
мы ожидаем большое
скрестить бульдога
не верь глазам свои
вверх легко, а вот в
неглупые вопросы _
уберите страшных к
про видимость изме
ox уж этот дублирующ
не могу поверить, ч
абстрактные классы
стоит тысячи слов В
словесная битва Бе
проблемы множестве
в форме... ведра с ор
приступим о Длинны
понаблюдаем за пов
решение упражнения
решение упражнения
создай себе соперн
решение упражнения
решение упражнения
решение упражнения
8 перечисление и Ко
перечисления и кол
перечисления и кол
перечисления и кол
перечисления и кол
перечисления и кол
перечисления и кол
перечисления и кол
Разве перечисления
Коллекция уток Ф У
* перечисления и ко
перечисления и кол
перечисления и кол
перечисления и кол
перечисления и кол
перечисления и кол
перечисления и кол
перечисления и кол
перечисления и кол
перечисления и кол
перечисления и кол
перечисления и кол
перечисления и кол
перечисления и кол
перечисления и кол
перечисления и кол
перечисления и кол
перечисления и кол
перечисления и кол
острова в потоке Дл
намного проще Объе
запишите это Дьяво
прочитайте это еШе
не пересекайте пот
серьезный диалог ^ 0
окна диалога — это
справочная система
напишите это сам ос
бросайте мусор в ну
мне снова нужно к в
уваж ительные прич
решение упражнения
блок вы бора Запись
застигнутый враспл
p.s. я нашел свою ляг
сохраняйте основно
сериализован для в
М ет од M atkA bsO вычис
о б з о р и п р е д в а
о б з о р и предвари
о б з о р и п р е д в а
о б з о р и п р е д в а
о б з о р и п р е д в а
^ з ь м и в руку кара
о б з о р и п р е д в а
Если у вас не получ
Эт о выход. Когда ул
о б зо р и п р е д в а
о б з о р и п р е д в а
о б зо р и п р е д в а
о б з о р и п р е д в а
о б зо р и п р е д в а
о б з о р и п р е д в а
о б з о р и п р е д в а
р е ш е н и е у п р а ж
\сод p r i v a t e v o i d o p e
в е зд е о б ъ е кт ы
к а к м и л о ! Анимир
з а м е ч а т е л ь н о
у п р а в л я е м г р а
\шг \же \щг /ш\ Уш\ / П
п о л ь з о в а т е л ь
у д а л е н и е э л е м
создание элементов
вот что вы будете д
начнем! Это элем ен
цветы рисуются при
соединим все вмест
что-то не так Тести
нехватка ресурсов
подробно о графике
методы создания гр
рисуем картинку Ри
как это выглядит? в
выглядит прекрасно
вернемся к события
как работает событ
что это за мерцание
сглаживание анимац
перестраиваем визу
решение упражнения
вывод графических
вывод мира ^ажнение
решение упражнения
мини-л0боратория А
O b je c tv ille Home of
смерть объекта c l a s
это твое последнее
смерть объекта Ког
о П одклю чите две д
смерть объекта Сер
Может пи метод заве
создаем копию Знач
1 ^ з ь м и в руку кар
не ограничивайте м
ссылки по запросу М
необязательные арг
почувствуй вкус на
надежность структу
расширь это Помнит
лучше быстрее силь
капитан жив! ^ а Г н
решение ребуса і^еї
дьявол в деталях Пр
UNQ для спасения Сбо
простые запросы Пр
это не sql Д н а щ о М
вот почему джимми л
небольшой обзор КЛ
а вы поклонник LINQ? П
Сгруппируем резуль
последний ребус в б
свой парень Джимми
соберем все вместе
ключевое слово var К
это всё, ребята Сое
Эндрю Стиллмен, Дже