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

Графика
п"".7, |
1".". |
|
..- |
.. |
и... |
.... |
|
.". |
s-,. ". |
,.. |
."."... |
|
.3 |
,.. .- |
,. .- |
|||
....". |
." ."... |
|
п., |
.,." |
sn |
. ..".... |
- |
".в,..- |
и.... |
3.. |
..,s.-..-.,.. |
|
||||||
s. .".s- |
.. ."s."s |
|
7,. |
s. |
.- |
.. ...s |
"..-... |
|
. .".".". |
.. |
....,.,e |
|
||||||
ж."., |
."1"l |
.".. |
....." |
|
1.-8..,.... |
|
.,."s". |
|
s..1.. |
..-.. |
". |
|
2. |
8"... |
||||
..,s"..-.. |
.. |
. .-.,..., |
..."s- |
". |
,.. |
и... |
....4 |
|
-....,.l |
.".." |
....-.. |
|||||||
., ."s . ... . |
7". |
У.... |
|
t.- . . |
.2 |
Лt.".. |
"и.. |
..е.. |
|
.. |
....".,.. |
|
|
|
и |
|||
и . |
."...... |
|
". |
,.. |
и.... |
|
...1 |
|
.".". |
n . ."..". |
,. ...".- |
.. |
|
.- .""..,. |
||||
.....7,. |
...-.. |
|
7,. |
|
.,.,.., |
|
8"... |
|
.- |
,1".. |
",..- |
".." |
|
.-.., |
"..-g |
|||
.".-.. .".... |
, |
|
..-. |
8"... |
|
. ..".,.... |
|
,1" |
..".... |
" |
|
и..... |
..4 |
|
|
|
||
.-8..,..., |
".в,... |
|
s. |
...".-.. |
|
|
. .- |
..... |
|
..."...... |
|
.,.. |
. .. ... |
|||||
"....s-,.., |
|
s-.,, . |
|
.". |
1.-., . |
.""..,......7.r |
|
|
.- s,.-.С 6 |
|
.-8..,..., |
|||||||
".в,..n |
..,.. |
.- |
.., |
.,."s.e |
|
|
|
|
|
|
|
|
|
|
|
|
|
..y
к"3
y..И
..И
""
""
4..3Ч "...-. .
У3 |
"...Ч -.8. |
|
4..3 |
t.. |
" |
У |
22t.. |
.2. |
4..3 |
" |
3". |
4..3Ф.-.
Б Бз |
Бк |
Б |
а а ц |

Перья
Ощ |
... |
"3.7 |
|
|
3,., |
.3. |
...".-... |
3.... |
|
. |
....щ. |
.,... |
|
з., |
|
С n3"..-. |
|
.-8.g |
|||||||||
.-."..".. |
.7 |
.." |
"3 |
"3....".с |
. |
9.. |
?."1"3 |
"3 ..... |
|
."..".. |
|
|
.7 |
3 |
. ... |
с . .. |
|
||||||||||
3. ... |
|
,., . |
3.... |
.,...? .6 |
Д,... |
.? |
,.. |
.3,.3.7., |
|
.." |
|
...- |
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
ь |
ьг |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
, ".- |
8г |
|
И |
р. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
и |
8 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
66х |
7. |
иi |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
.,. |
...- |
|
., .. |
..."3.7 |
3.. |
.. |
..".щ ... |
".-.. |
.-7.щ, ., |
7.6 |
|
.. .." |
....- |
|
|||||||||||||
..."3.7 |
|
3.... |
|
|
|
|
,..... |
|
.3. |
"..,.,3,... |
|
|
|
.." |
. .-. |
."3.." |
кщ.. |
.-... |
".-."6 |
|
|||||||
Кисти |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ж. ... |
|
..,..- |
|
.-.,.щ |
.3. ...".- |
... |
|
..3..,..".., |
|
|
.."а"3а"3 |
|
....".6 |
".. |
|||||||||||||
.3. ...".-... |
|
|
8. |
3. |
. |
..."3.7 |
3.... |
|
.,... |
|
." ..".щ |
|
7-."3. ... |
|
8. |
3.щ |
.-В |
||||||||||
..,..-.. |
|
37" -?.. |
3. 4.,.-. |
. |
.. ."3.73.... |
..... |
|
.... |
".щ .. |
" |
.,.,.-В |
|
|||||||||||||||
.... . |
|
.-.,..., |
|
|
.- |
-.,..". . |
?,.".щ |
|
|
г8 |
.,7-. |
...." |
|
". .,..,.6 |
|
ж" |
.- |
||||||||||
.,." ... |
3,. |
|
8"... |
к... |
|
.. |
..."3.73,... |
|
|
..".щ |
7-."3 |
.... |
,, |
|
.-. . |
, |
.-. . |
щ .,В |
|||||||||
3-3. . |
" |
. .,...". |
.-.3 . .-.-..-5-?. |
. .-... |
-. .-?. |
зД.-..-к.- |
..".-..", |
|
|||||||||||||||||||
... ... |
|
.., |
|
.- "..-,... |
|
..3... |
|
3.... |
ЛС |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
y..-." ., |
|
.7.., |
.3-.. |
|
ггг |
e ." ?,.." |
.3. . |
|
-.,. .. |
.-.. |
".7 |
.. |
|
....,. |
|
||||||||||||
." .. |
-.щ?. |
.-7.-.. |
.? . |
ж.. |
.. |
." |
3. |
|
кщ.. |
.-.. |
|
",.щ ."3.7".-.,3.?. |
|
|
." |
||||||||||||
...... |
|
.3-3.."?3 |
7-.. |
73 |
." |
".,.. |
|
?." |
|
", ?".." |
..,3-.. |
. |
."?"7.. |
|
|
..,."В |
|
||||||||||
..,.,3,..щ. |
|
|
...., |
|
."..-.3. |
,?щ. |
. .- |
.-.".eО". |
.,.".".щ, |
|
|
.7 |
... |
6 |
|
|
|
ь и ггг
|
. |
Игг. |
ггг |
|
|
|
|
|
|
8ИА |
ггг |
|
|
|
|
|
|
|
8i |
г8и |
.thi |
ггг |
|
|
|
|
Д,... ..."3.73.... |
|
.3. |
.,.,.-.. |
. ?,.".щ |
г8 |
". ,..- |
г8 |
Аг.. |
... ., .,.,.-.... |
. |
?,.".. |
е |
.".".щ, |
.7"..-.-.. |
?." |
"3 "3.. |
...6 |
пЛ.А. |
2" |
,.. . "2. |
.,. |
ПсГ |

Текст
Текст выводится с помощью комбинации шрифтов и кистей. Так же, как и перья, класс Font использует кисти для заполнения текстовых строк.
system . Drawing . Text содержит коллекции всех шрифтов, установлен ных в системе, в которой запущена ваша программа, или инсталлированных как часть вашего приложения. System . Drawing . Font имеет ряд типографских свойств.
>> Bold » Size >) Style
')) Underline
ПЕЧ АТЬ ФОРМЫ
ВVВб и более ранних версиях одним из наиболее распространенных способов получения информации на бумаге была печать формы. Данная функциональ ность была утрачена в .NET, но вернулась в Power Pack и теперь встроена в Visual Studio 2008 и выше. Она доступна во всех языках, но программисты VB используют ее чаще всех.
Если вам нужно создать отчет, вы должны использовать Microsoft Report Viewer, который не описан в этой книге. Если вы просто хотите вывести текст и изображения на пользовательский принтер, вам должен помочь компонент
PrintForm.
Чтобы использовать компонент PrintForm, перетащите его из панели инстру ментов в форму в представлении Design View, и он появится на панели компо нентов. В обработчике события установите свойство Fоrm компонента, а затем вызовите команду печати:
wА, |
А r |
.K |
°":r |
Q |
m , |
°": t |
б r |
)-mr |
Б, |
°": |
mi |
m |
|
P , |
°": b/ · |
Q , |
°": |
- |
, °": |
|
ф , |
°": m e |
|
|
|
|
|
m i |
wТ |
|
|
|
|
|
ирос ЧАСТЬ 3 Вопросы проектирования на С#