
- •Оглавление
- •Об авторе
- •Посвящение
- •Благодарности
- •Ждем ваших отзывов!
- •Что такое .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
- •Приступая к работе
- •Настройка проекта
- •Обработка счета
- •Создание подключения к событию
- •Рисование доски
- •Запуск новой игры

Оператор... |
...возвращает true, если... |
а >= Ь |
а больше или равно Ь |
а < Ь |
а меньше Ь |
а <= Ь |
а меньше или равно Ь |
а ! = Ь |
а не равно Ь |
хов ысанесп аьыокооомираякооайеьтас ьсимрераач
int |
m = |
|
|
|
int |
n = 6; |
|
|
|
|
= |
|
|
|
|
q.". |
6)(.")"6")"."))"B 6)(<.$(.$".<==)$ |
")(" p 6"<h."/>.m |
|
="/>n" |
". |
|
||
|
" |
( |
"<.("<)$.)")(="6)"0"/"); 0/=.<"e |
(</".;e .(6".t ../a $= |
|
pв |
|
hhv ( vp p <"6)(."0"));" )(R" .;)$R")(= ."))"..); |
=
in in
in +
in |
5 |
|
in
-
-
++
hi( G n++ |
= |
= |
|
++ |
- - |
n u ++ |
|
++ |
|
++ |
|
{=(*(+(*= =*(-)())= -=( |
=(=(=+ - ;( |
(=RI*(=g==+(+(- -(=) ))g +)=( |
||
{=(*(+(*=l =*(-)())=t (+=) |
)=( (+ ii |
)(=*)-())-= ; =(*(-())=- |
+)=( |
|
r |
)(-(=)g=+(==t =*(==(a((+=*g |
)(==(=(===*(-)())= =+*(; |
=- |
|
=(-g |
(=(+( =( =+*(;(-) |
|
|
|
Сравнение чисел с плавающей точкой
n.-..,.., |
..3. О..,. |
. ..-.-.7,. |
."О.". .".,. |
|
.,.." |
".-.-.... |
."..,.....l |
.-. О." ..,.. |
.3..- ".".-. "..".".."... |
e |
|
-...".... |
,, ..-..,..,
.,
..
..".., ,.3.
=
=
== =
104 ЧАСТЬ 1 Основы программирования на С#

|
|
|
=, = |
= . |
|
, |
.А= |
,А А= =.===. |
А, = = , . . |
|||||||
А= ,А |
|
== |
= = |
, |
= |
,. . |
,. А= =.=.= |
= . А |
. =. |
, |
||||||
А. |
= .А. |
.==, |
|
. , =, |
.А= |
,А=А |
|
= |
== |
|
|
|
|
|||
|
= |
.==,. |
|
. . |
|
|
|
|
|
.= |
, |
, |
, |
=, |
||
=== . |
=. |
.А= = == |
.= |
|
. =, |
|
, == |
.= . |
||||||||
А= =, |
А= =, |
|
А= =, А= =, |
|
=А, . |
|
|
|
|
|||||||
|
== .= =. . |
|
|
, , . |
|
=, А= =, |
|
|
|
А= |
||||||
|
=, |
|
|
, А= = |
|
|
= |
|
|
, ,А .= |
|
|||||
|
== .= = . = . , .А= |
|
, . , |
|
==А. |
|
|
|||||||||
|
= = А=. = |
|
, , == =. , == |
=, А, , |
|
,А, =, |
|
|||||||||
|
. |
= |
А. |
|
, .=, |
, |
А. |
|
= = |
|
= . = . , |
.А= |
|
. |
||
|
|
, |
==А , |
|
, === .= = |
|
А. |
= |
, |
.= |
= =, |
|||||
|
А= = |
, |
|
|
.А=,. = . , . |
=, , |
|
, == |
||||||||
|
, |
.А= |
,А== |
|
|
|
= |
|
= = |
|
, . ,, |
=,. А., |
.= |
|
||
|
. , |
|
, =, =. .= , |
|
, |
|
|
|
|
|||||||
|
|
, |
, , |
, |
А, |
,А |
|
.= А= = ==.= |
|
|
|
|||||
|
, |
=, , |
, |
|
, = = . |
|
= .= |
, |
=,== |
|||||||
|
.= |
. |
|
, |
А= |
, |
|
|
|
|
|
|
|
|
||
== |
= |
.А.= |
== |
.= |
. , |
, |
|
= |
. |
,== |
.= |
|||||
|
, |
=, |
, |
|
,,== == |
|
|
, |
, |
|
= |
|||||
= |
= |
, |
=, |
|
=,= == |
=А. = |
., ,== |
.= |
, |
|
, |
|||||
= А= = . |
=.А= = |
|
== .= |
|
= |
|
|
|
|
|||||||
|
, |
===. |
|
. , |
, |
=, А |
=. . .= |
|
|
|
|
|||||
, |
, |
|
, ., |
|
|
А= , =, |
. . |
|
|
|
|
|||||
Составные логические операторы |
|
|
|
|
|
|
|
|||||||||
с.1 |
S#,#-#))0m P7S( |
|
imaima7-#7Pг -1 |
-S#c7f7B)0# n.1 |
)7m !S#,(P!,0 |
S!i |
|
|||||||||
.(2())0# |
- P(2. Иts |
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
ompS#,(P!, |
тьunS,#n-P(-.1#P |
-!2!3 |
.!F 7B#-.73 g.-7-(. |
#)P 2)(.( |
|
||||||||||
|
-7)1- тt(S,7-#,б |
|
7- P7))! |
#-.7 |
.!6)! |
7 .!6)! |
|
#-.7 |
7- |
|
||||||
71baPTC#h |
P7))! |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
p Операторы 105

Таблица 4.3. Составные nоrические операторы
Оператор. ..
ы
(u
. .. возвращает если. . .
аравно false
аи Ь равны true
Либо а, либо Ь, либо они обе равны true (а и/или Ь)
Либо а, либо Ь, но не обе одновременно равны true (либо а, либо Ь)
а и Ь равны true (сокращенное вычисление)
Либо а, либо Ь, либо они обе равны true (сокращенное вычисле ние)
вкедлт.ае |
дмиоыесиоси итoе мыокреысоьрп а ыорярпе ыы.. аьарро |
|||||||||||||
рордиа окeто ордиНтордиа а, а Ь одромсенерросимрп true; а I Ь аьарро |
орN |
|||||||||||||
ди а окeто ордиттордиака |
а, ака Ь, ака ои ора одромсенерросимрп true. |
|||||||||||||
дыесирос :, тС2,чирч-,, |
|
|
|
моомсиm |
.ие oринераеtrue о |
иа окeфооf,ио |
||||||||
фордиоринерая а а Ь сиoканрпН :еtтордиодроао оринерааa |
true, и дслроеa |
|||||||||||||
false. iье ыесенаькеррпе оыесиосп моомси.ит |
мфинеьмесеолкeии oринеN |
|||||||||||||
рае аыи bool. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
М.", |
# ",. |
|
% |
|
%-"J |
--",.%%(#1.--#Jry%".. а.rtб3.egsб |
|||||||
|
й |
Па,% |
|
.,%-"("(%% К .","-"((.- |
%.#з |
ys |
|
%".",# |
",. |
|||||
ТЕХНИЧЕСКИЕ |
--.."--."(.J . --. --%. # к%..-"-" |
."--юm("p#--"к,#1"%--В 6 & 3 |
||||||||||||
!!!!! |
( 0 1 1 0 |
|
& 0 0 1 1 |
|
оооеа 0 0 1 0), 6 1 3 оооеа 7 ( 0 1 1 0 |
|
1 0 0 1 1 оооеа |
|||||||
,;,!!!!,,-A |
о |
нд |
и |
|||||||||||
|
|
|
|
|
|
|
|
|
|
ид |
|
|||
|
0 1 1 1 |
ре о о 6 л з оооеа |
5 (0 1 1 0е л о о 1 1ря оооеа |
0 1 0 1ро ы ореооеор ооркиигр0 |
||||||||||
|
ао |
асиея региоиееор оитя#еа аео о нгао аерги еи ооееиогорооиг0 |
||||||||||||
|
ерй,м иаsиги |
|
еареаогя рекаоиосрб а еио о .егиоеиги |
еоиаегар0 |
||||||||||
|
итяеай |
|
|
|
|
|
|
|
|
|
|
|
|
саетивери воо аеиоогаооасиея еадаsр ео еоивмвытри: еа риибг авеа ивоо ытаориаи агтр срий, сии аеа Доютбсоигер# ом еиосое еаоиигил 1оееиагори етивыбтро еорииоь
|
т |
зс т |
с |
|
|
, |
нгаи етысои еб омсретриг 1 , , ч1, г |
T, ,, р |
1 , , ч1,г T |
, |
|
,. |
о уогии еиагор |
:оооем аер ано true ака реыноп |
риаа. фифоеoрине, |
||
рае ькедле ысаьмоаe |
ыесенерроа ttdо ноoе |
офиоиeьяiно вп мпыокряе |
|||
канртт сионл t медeеька одроао мпсиoераа |
симро false, о фитан п |
ра |
oпти вчAн,и cи тйеебРи rа емаряява о ров NиериAси

ООПЕiИЕЕТ8МОПСО!СМЗЗИЕТ8ОМИЕТПОПЕ1B38ОПВСМ8ОСЕТВМBЗН s МЕВ ЕТОВЕИЗl
СОВЕТ
!ПВСМ8ОС СМЕТО8МВМЕМПО8 |
!ИhЕООМОB МИВЕОИ1 ЕТПВВB3..,.В!ОМЕСМ!ВЕИН |
||
;, |
\ 1 |
\ |
|
D Б8ОИЕТИ8BМcИИС9 МЕhИЕТПНВ18ЕМhВЕИВ |
ИСВЕТПИОЕО |
||
СММЕОК 5:КИдD8ОПВСВЗВЕЕОИ ПСИЕТММИММВ1ЕМ8ЕТНhВЕИВК5rдКИИ |
|||
ЕВ МЕhИЕТПНВ8ЕТНcЕТПИi !В |
СММЕО s КИ5 8fО.!0С9 |
||
МЕhИЕТПНВ8 |
|
И ПОЕТПВБ8О!ООПСВВВПНВ8 ОМООВ1ЕМhВЕИВ |
|
ПСИЕТМОИПВСВЗВЕЕОИ8 |
l |
|
|
DЕ ЗО!В8В ЕМ1ЕММ8ЕБ8ИОПВСМ8ОСЕ ЕТООСМ..,.ВЕЕОВИИ нЕТООСМ..,.ВЕЕОВИПИ l
ВОО8ОСЕВПСО!СМЗЗИЕТ8ЕПОПМ!М38ЕТНЕМЕТ8МЕВМС8ЕЕВОПВСМ8ОСЕВПН МЕПОПЕВЕИНООЕОСВ8ЕЕr1МВМhl\МПСИЗВСsВЕТПИМЕСМ!ВЕИВВОП!ЕО
МЕПОПЕИ8ЕВОО8ОСОВВВИЕТ8МИВСЕВ 8ОПЕООПСВВОЕТKММИ81ЕМhВЕИВD
ТЕХНИЧЕСКИЕ ПИЕ!И!ЕИВ МЕСО!ВКОПЗАВВЕОПНЗА!ИППСЗОСИНЗАВОНВЗАП1 ЗАПСНМ.ВОЕ А, ЕО!ИВ ПИПССО!ПМВВПВОНОИ!ИЗЕ ВПМИСНМОСНИ!И!ИППОЕ НИКЕ!ВВЗАВИ СИНПОeО!ИЗЕВПМБdРООПЗАМВОПЗАЕПНБ! !М ЕВ"МВЗИЕСО!ОМВВЕБОЗ.ВОЕ ПО!ЕМТИ КЗАСОЕПМВВПЗАЗЕ!Е!ИИ .ВЕ МП!ОНЕЗАСМР
Тип выраженl1я
ж ,,1<'l,,#-'l,:1Y1 |
S'l, |
()#-,s ,-S.S. |
,..#- |
-# |
,#-## ,.,"1JJ"1 |
()#-,s ,-S.кл |
._ |
.,,,"1 |
S()'l, ,,#,,s.,,v## |
,,()..#-'l# |
|
|
|
|
|
|
|
Зф
ГЛАВА 4 Операторы 107