
- •Оглавление
- •Об авторе
- •Посвящение
- •Благодарности
- •Ждем ваших отзывов!
- •Что такое .NET
- •Создание исходной программы
- •Тестовая поездка
- •Каркас программы
- •Комментарии
- •Введение в хитрости панели элементов
- •Повторное использование кода из панели элементов
- •Правила объявления переменных
- •Вариации на тему int
- •Объявление переменной с плавающей точкой
- •Ограничения переменных с плавающей точкой
- •Объявление переменных типа decimal
- •Сравнение десятичных и целых чисел, а также чисел с плавающей точкой
- •Логичен ли логический тип
- •Символьные типы
- •Что такое тип-значение
- •Неизменяемость строк
- •Основные операции над строками
- •Сравнение строк
- •Сравнение без учета регистра
- •Отличие строк в разных регистрах
- •Преобразование символов строки в символы верхнего или нижнего регистра
- •Поиск в строках
- •Как искать
- •Пуста ли строка
- •Удаление пробельных символов
- •Анализ числового ввода
- •Обработка последовательности чисел
- •Объединение массива строк в одну строку
- •Арифметика
- •Простейшие операторы
- •Порядок выполнения операторов
- •Оператор инкремента
- •Сравнение чисел с плавающей точкой
- •Составные логические операторы
- •Вычисление типа операции
- •Типы при присваивании
- •Перегрузка операторов
- •Ветвление с использованием if и switch
- •Инструкция if
- •Инструкция else
- •Как избежать else
- •Вложенные инструкции if
- •Конструкция switch
- •Циклы
- •Цикл без счетчика
- •Правила области видимости
- •Пример
- •Зачем нужны разные циклы
- •Зачем нужны массивы
- •Массив фиксированного размера
- •Массив переменного размера
- •Свойство Length
- •Инициализация массивов
- •Понятие <т>
- •Обобщенные коллекции
- •Инстанцирование пустого списка
- •Создание списка целых чисел
- •Преобразования списков в массивы и обратно
- •Подсчет количества элементов в списке
- •Поиск в списках
- •Инициализаторы массивов и коллекций
- •Выполнение специфичных для множеств задач
- •Создание множества
- •Добавление элемента в множество
- •Выполнение объединения
- •Пересечение множеств
- •Получение разности
- •Не используйте старые коллекции
- •Обход каталога файлов
- •Начало программы
- •Получение начальных входных данных
- •Создание списка файлов
- •Форматирование вывода
- •Вывод в шестнадцатеричном формате
- •Обход коллекций: итераторы
- •Доступ к коллекции: общая задача
- •Использование foreach
- •Формат индексатора
- •Блок итератора
- •Создание каркаса блока итератора
- •Итерирование дней в месяцах
- •Что же такое коллекция
- •Синтаксис итератора
- •Блоки итераторов произвольного вида и размера
- •Обобщенные классы безопасны
- •Обобщенные классы эффективны
- •Очередь с приоритетами
- •Распаковка пакета
- •Написание обобщенного кода
- •Использование простого необобщенного класса фабрики
- •Незавершенные дела
- •Ковариантность
- •Использование механизма исключений для сообщения об ошибках
- •Что происходит при генерации исключения
- •Исключительный пример
- •Что делает этот пример "исключительным"
- •Трассировка стека
- •Советы по написанию кода с хорошей обработкой ошибок
- •Анализ возможных исключений метода
- •Как выяснить, какие исключения генерируются теми или иными методами
- •Генерирующие исключения выражения
- •Работа с перечислениями
- •Создание перечислений с инициализаторами
- •Указание типа данных перечисления
- •Применение перечислений в конструкции switch
- •Процедурные поездки
- •Объектно-ориентированные поездки
- •Определение класса и объекта
- •Определение класса
- •Что такое объект
- •Различие между объектами
- •Работа со ссылками
- •Классы, содержащие классы
- •Определение константных членов-данных и членов-данных только для чтения
- •Передача аргументов методу
- •Передача методу нескольких аргументов
- •Соответствие определений аргументов их использованию
- •Перегрузка методов
- •Реализация аргументов по умолчанию
- •Возврат значения оператором return
- •Кортеж с двумя элементами
- •Создание кортежей более чем с двумя элементами
- •Глава 14 Поговорим об этом
- •Определение методов
- •Определение статического метода
- •Определение метода экземпляра
- •Полное имя метода
- •Ключевое слово this
- •Когда this используется явно
- •Что делать при отсутствии this
- •Использование локальных функций
- •Прочие уровни безопасности
- •Методы доступа
- •Пример управления доступом
- •Выводы
- •Статические свойства
- •Побочные действия свойств
- •Дайте компилятору написать свойства для вас
- •Методы и уровни доступа
- •Замена конструктора по умолчанию
- •Конструирование объектов
- •Непосредственная инициализация объекта
- •Конструирование с инициализаторами
- •Инициализация объекта без конструктора
- •Определение свойств с кодом
- •Определение конструкторов и деструкторов с кодом
- •Определение методов доступа к свойствам с кодом
- •Определение методов доступа к событиям с кодом
- •Наследование класса
- •Более сложный пример наследования
- •ЯВЛЯЕТСЯ или СОДЕРЖИТ
- •Доступ к BankAccount через содержание
- •Отношение СОДЕРЖИТ
- •Заменяемость классов
- •Неверное преобразование времени выполнения
- •Указание конкретного конструктора базового класса
- •Обновленный класс BankAccount
- •Перегрузка унаследованного метода
- •Простейший случай перегрузки метода
- •Различные классы, различные методы
- •Сокрытие метода базового класса
- •Вызов методов базового класса
- •Что неверно в стратегии использования объявленного типа
- •Использование is для полиморфного доступа к скрытому методу
- •Объявление метода виртуальным и перекрытие
- •Получение максимальной выгоды от полиморфизма
- •Разложение классов
- •Абстрактный класс: ничего, кроме идеи
- •Как использовать абстрактные классы
- •Создание абстрактных объектов невозможно
- •Опечатывание класса
- •Реализация интерфейса
- •Именование интерфейсов
- •Наследование и реализация интерфейса
- •Преимущества интерфейсов
- •Тип, возвращаемый методом
- •Что скрыто за интерфейсом
- •Гибкие зависимости через интерфейсы
- •Реализация отношения СОДЕРЖИТ с помощью интерфейсов
- •Определение делегата
- •Пример передачи кода
- •Делегирование задания
- •Очень простой первый пример
- •Более реальный пример
- •Создание приложения
- •Жизненный цикл делегата
- •Анонимные методы
- •Проектный шаблон Observer
- •Что такое событие. Публикация и подписка
- •Как издатель оповещает о своих событиях
- •Как подписаться на событие
- •Как опубликовать событие
- •Как наблюдатели "обрабатывают" событие
- •Сборки
- •Выполнимые файлы
- •Библиотеки классов
- •Создание проекта библиотеки классов
- •Создание автономной библиотеки классов
- •Создание классов для библиотеки
- •Использование тестового приложения
- •Дополнительные ключевые слова для управления доступом
- •protected: поделимся с подклассами
- •protected internal: более изощренная защита
- •Размещение классов в пространствах имен
- •Объявление пространств имен
- •Пространства имен и доступ
- •Использование полностью квалифицированных имен
- •Ссылочные типы
- •Выходные параметры
- •Альтернативные методы возврата значений
- •Работа с переменными out
- •Возврат значений по ссылке
- •Различия типов-значений
- •Когда следует использовать структуры
- •Добавление распространенных элементов структур
- •Управление отдельной записью
- •Добавление структур в массивы
- •Перекрытие методов
- •Определение того, что следует защищать
- •Документирование компонентов программы
- •Разложение компонентов на функции
- •Оценка рисков
- •Аутентификация с использованием входа в Windows
- •Безопасность развертывания
- •Уязвимости сценариев
- •Наилучшие методы защиты приложений Web Forms
- •Получение данных
- •Настройка образца схемы базы данных
- •Подключение к источнику данных
- •Работа с визуальными инструментами
- •Написание кода для работы с данными
- •Использование Entity Framework
- •Где водится рыба: файловые потоки
- •Потоки
- •Читатели и писатели
- •Пример использования потока
- •Как это работает
- •Наконец-то мы пишем!
- •Использование конструкции using
- •Загрузка файла из Интернета
- •Регистрация сетевой активности
- •Графика
- •Перья
- •Кисти
- •Текст
- •Классы рисования и каркас .NET
- •Приступая к работе
- •Настройка проекта
- •Обработка счета
- •Создание подключения к событию
- •Рисование доски
- •Запуск новой игры

|
pr oren S·ersg |
-adot 1 -ndSeitnr |
ead-ddgrtntdori goida·d.d |
rno" |
||
|
ort)cp g. ·dsgsenr |
Sondror enet·d |
aas dnadSnotd·g Snoitt Stu·eF |
|||
СОВЕТ |
)daiio·orSd |
snathdsdS aas nsd.sttto ordS tSrdttrgdnoogad-tSasS |
||||
ЕТrdro innso SSdandnnstrdst 1 -obas SoaЕТdn·gs tSrdttrgdnood.d |
||||||
|
drorent S ,."g.& s)gl'1 o·tdtat Se-nsgrn odtt·ae tn·ЕТ e--:: i; |
1A--: |
||||
|
tcsnaorSt - tsttnrsecMatrnt stoosdСrneanae r1 e>A1-tcnoordSe2С |
|||||
|
snatordsc. ndoan: |
tt S od·en rnao·grn |
·t Soataone-:- P: t.Qt-eas_!; |
|||
|
eosco!t ·nС SoaЕТdgrndrorene orseorese |
g eort·dSgrn rd odagdn. |
||||
|
orSd nsd-nadS ·t dao· drorentodrdsdn Stt nd aeinr ,ort·dSgrn |
rd |
||||
|
un ottdn a·tdn·gn |
g S ndan statnst rt-e asfgoF |
|
Инструкция else
,s".".n, |
8.1s4.. |
."..1n |
..".,.... |
..-.." ..s |
...-.7., |
..."...6 |
- |
|
....,. |
. ....,.,11". |
.-.,, |
8.-1.,1., |
...".1"1" |
.,s. .- . |
.,.,.,11". |
8 |
|
."..-1.,... |
|
1-.к"..5,, |
.. .... |
.1-.,1..l |
. 93i |
|
|
|
...
n
О.".-. s"1... |
|
.s4.. р |
..51.. |
|
.".s"..s. |
|
..".,. |
.,.n, |
..."... |
|
..-.."..g |
|
|
s. ..-.7.,e |
... |
|
к"..5, |
9,i." |
1.s-s |
1, |
.".,. |
кn .. |
.,1.5, |
... |
.-.1" |
9.i |
|
.. .-s.. ....-,. |
. |
nг |
..,... |
."..,1" |
s... |
,.", |
.."." |
. Г.l.".." |
...7,, |
|
|||
.s-.-.. к."s |
s". ".n. |
.n |
.".1.,. |
.. |
,... |
1, |
.n .".1.,... |
|
к."s |
р О6". s-s.ng |
|||
.. .. ....,.,11 |
|
n. |
.n5, |
8.-1.,1. |
s".- ... |
..."...".-1.. |
. |
Г. |
|
|
ГГс ЧАСТЬ 1 72,#.N Т-#O-...- #.-,.Q ,-C6

Как избежать else
|
r,( |
)( |
(q(( |
)#-.! |
3.(F |
|
|
-r (-F!.)!- |
|
.#.-.# |
-!6)! |
# 2(S1.!.(.3-1 |
|
S!g.!-1 |
)#.!.!,0# |
S,!F,(--(-.0 |
|
S,#.S!q |
.(7. |
S! |
-!2-!6)!-.( |
(22#F(.3 (-r |
|||||
S! |
32!-()(1 |
|
гr #- |
( !)! |
S,(-!.(. |
. 1F |
.ch#)(7 |
1.!2! q(.(#-!-.( |
(-F!. |
||||
)! |
! .#.-.(d |
х(. |
,(---!.,#))!# |
-0ch# -0q(- #)(# |
-(.-(-( |
3)!F! |
2)( q#)( |
||||||
-!6)! |
S#,#S(-(.3 |
- |
#.17 e(- |
!2,(2!- |
|
|
|
|
|
=
=
,СОtССЗЗИАЕТЕА'ИЕТС3oИВАВЕТН ОСBЕТЕЗИ'САЕТОИАТОoЕ1B3ЕТD;,SAJЗ a SAJau 1r;, SAJTD1SAJ s ОВНОАЕТСО'НЕИБОМИМСoВНЕТco lD,l
СОВЕТ |
|
|
|
|
= |
|
|
|
|
|
|
|
|
|
= |
= |
= |
= |
= |
= |
|
|
|
|
|
= |
||||||
|
=+ + ==+ |
<= +====+=+=<+=+=+ |
=+=<==+ |
==+=+ = +=+<<= |
||||||
=<==+=+===+ |
++===+=+=<+ += =+ |
|
=+=<=+ |
===+=+=+ =+==++ |
||||||
=+ |
< |
= |
=+< +=+ |
+==+=+===+ |
++===+=+=<+ += ==++=+< |
+= |
||||
=+====== |
<= |
=+==+ ++===+==++===+=+=<+ + ===+=+=+=+ |
||||||||
<= |
+ |
==+=+==+=+=====+=+ <=++===+=+=+==+==+=+=+ |
|
ГЛАВА 5 a жарт"ВевВи жотогояи тнжо" е ВевNи 1би

Вложенные инструкции if
НfыНВССВ еНiгкеНiргВiОеfвнмfЦВОifвинiЦiНнfС ЦЦfгiИfеНД ОfеНСfгfврВiЦжчДавиОннВчДавiннжiеНf iнОжiаСfОНинВ
ИiбfННiбОнfаОнЦЦiгiннжъмИВ iонД |
НигвД ОеНВЦДвннf |
fiНi нДi i нf |
бfнiчнfнiЦжмжЦВfiОаfлжъеfОiНнеНf |
iааfНнfЦНfiСiнДнf ОfвнбЦаДвкf |
еНfаОfОжЦжеfвИиiСжъеНfыНВССfеоfгачiОfЦЦлfвiiрi авfрнfСавкчВi Оf
СfрiОеНДЦiаОДбл вн |
ДСмВОНВОВС НfСiОfыfбВбfоаСжав мВеНВ |
ДЦВОн |
||||||||||
ЦiвДчДИкеНf |
iнОнfаОВЦбДоiавДЦiвДчДнВЦбвВгВб |
ОfСкfСiИОккрi ЦЦi |
||||||||||
гiнВ нiЦiНнf |
аiНВЦнfНiмквнОВОеНДгiОаиеНfДынfНДНfЦВОнбВбfiлж мИВ |
|||||||||||
чiИДiеНf iнОнfаОВЦбДонДлжвfЦЦiгнif |
НfыНВССВгfврнВ мВеНВДЦВОнк |
|||||||||||
еfвнмfЦВОiЦвиiвД ДнкеНf iнОнfаОВЦбДоfвнбОffыгВбfыгВЦiвД |
ДнВЦбвВгВ |
|||||||||||
ЦЦiгiнВЦiНИfДЦжеfвниОнЦжчДавiИДиОfыгВДОfвнбОffыгВбfыгВfлВЦЦiгiн |
||||||||||||
нжъмИВчiИДибfННiбОИж ви |
ОfыИifлъfгДСжгЦiбfнаОНкб |
ДД |
fгнВ |
|||||||||
ЦИкОНДгНкыfо |
|
|
|
|
|
|
|
|
|
|
|
|
A!!!,;!d!, |
АлA!N!!,e!,!, |
! !!!! |
!!,;P!B |
|
!A!!!,;!d!! |
П |
!!-i!!! |
|||||
!!!, SНBN!-iAA! |
u |
uu!!! oSj! -iAA!i! tНu |
|
n!!!!!!AA!,uod |
||||||||
!!!!! |
!!!P!!!!! |
e |
meiW |
iWtWniАлМi |
W |
WniD!!!!B-i,;!! |
||||||
ЗАПОМНИ! !!!D!!!,;E |
!A!!!,;!d!E |
Ал!!, |
!!P!Е o!!-! |
!-i-!D!!B |
!!d!!N |
!!!!! |
||||||
!!! !!! |
!-A!!,;D!A!! |
A!!!!!!!!A!P! |
!!!!! |
!!!B-i!!!!!!, |
|
|
|
|
!_
s : Н
!_
r!.i |
|
! . i С |
|
|
s : С |
|
r |
С |
r |
Н |
|
!_
120 ЧАСТЬ 1 Основы программирования на С#

ГЛАВА 5 |
Управление потоком выполнения |
121 |

!ПСВВВПНИ8ВМСiНЕТВООНА8СН8МЕТНСhСПВПСО1ССЗЗЕТЕТИАПОПT1ОМСt НИВЗОПИЕТСП8ВTНЕТrЕТИЗМОПTНЕТИЗВНr lc8О ПО1МОПНВПВ8 1ООНСrОВИ8T
И И1ЗВНН8TООНЕТ88СНЕТlcЕТПИООНА8СН8МАС8СВhСВ8АНММСiВЗ ООВВВВi СОВЕТ ЕТН8TСС1 И ВЕТПИОНСИЗВНОМСННСНСВПНВВИ1ЗВНВНИНВОА8С8ОhНОМНВАi
8И8ОПTООВНОИ1ЗВНВНИВСНВ ВВАН8Tl
МОВООССВО8НОИМВПИhИНЕТМОПСВСИ НВООССВО8НОИМВПИhИНЕТПСОTВН8НОИ А8СМОИПСИМОВИО8ЕТПВВt oВЗtМЕТМОВПСОB kССЗЗЕТ
aОПTООПСИММОВВООССВОНЕТ8 r1НСhВНИИИ МОПСВСИ ПСОTВН8НОИА8СМОИПСОi 1ССЗЗС ПСИЕТ8BПИО8МЕТ'ИЕТПВНИНЗМЕТМВВВИН8 8ВСВАB3oИИМСАСВ1BПT8С8
Мa c
Оa
,DD cМTBs |
Д!ВО!О ИОiИ' Н НЕТИО!НВЕТl ВН CА |