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

Создание классов для библиотеки
f!,-5,!-(- |
.,!0.P |
252.5!P0.5 . |
(LL!- -0 L!de(0P0. |
..(LL0 L!LP(-.1 |
|
|||||||||
7t50 |
gP1 252.5! |
P0.1 tr,5-0.022i3 |
2560 |
.,5-0, |
SКsг |
КК.0-!2LP ,5,10P |
|
|||||||
.,!LP17 |
252.5!P0.1 |
.. (LL!- |
|
|
|
|
|
|
|
|
|
|
|
|
-S |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
х |
|
|
|
|
|
|
|
|
|
А |
|
|
|
|
х |
|
|
|
|
|
|
|
|
|
А |
|
|
|
|
х |
|
|
|
|
|
|
|
|
.S |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
А |
|
|
|
|
х |
|
|
|
|
|
|
|
|
.S |
|
|
|
|
|
|
|
|
|
|
|
|
|
52.5! P0.5 -!F1P L!.0,6(P3 |
.72i0 |
P5.i |
Мa..(LL0б L |
, |
1,0.0.0F( Piм |
|
||||||||
52P0, f03Li 5 .0,0 q5L.0251 |
ompLP,1.P1,(F |
,(LL.(dei-(0PL1 - F.(-0 |
rr |
P,1. |
|
|||||||||
,0 |
У! .0.0F(P(F |
- F.(-0 |
вфУ |
с0.0F5,!-(250 |
L!2i P53 |
!2У 52P0,f 03L(F |
|
|||||||
- F.(-0 |
P0,f2 03Li |
(У52f!,-(c57 |
! |
.0,0q5L .025 F-!62! |
2(3P5 |
- F.( |
|
|||||||
-0 |
.5L.5g.0-02P!- |
L 5L.!.3de!-(250- |
.0,0q5L.0253 |
|
|
|
|
|||||||
|
. |
|
. 2 9 |
.9 |
|
. |
. |
442 |
92 |
|
||||
|
|
. |
9. |
|
6 . |
442 |
. . |
2 |
9 |
2 |
92 |
. |
||
ЗАПОМНИ! |
. |
|
|
. |
|
2. |
|
|
. |
442 |
2. |
. |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
462 |
|
|
. 2 15. |
1 |
52. |
411. |
2. 24 |
52. |
415 |
14 |
|
|

Использование тестового приложения
l( |
( |
.! |
-#2# 2(2.(! |
#.( .. |
(--!- |
2(к#W! 2# .#.( |
# |
(. к |
!2( |
|
2162! |
|
дРыi |
|
||||||||
дwwР н w Рщ |
Р2#2!k.3 |
(1 |
-0.!.2(-(1 |
|
.,!Д,(--( |
.! |
!,(1 |
.!2-!.( |
|
# |
|
|||||||||||
- (,!-( |
3 ,(2! 1 |
|
2(2.(! |
#.( |
- |
.,!c#--# |
|
,(2,(2! |
.( |
S1 |
# -02!-( |
|
## |
# |
!.!- |
|
||||||
с,1W(-( |
-.!-( (б |
0.( |
#- .,!W,( |
|
|
т1.! |
!,(1 |
(-.!.321# |
|
..(--0 |
( |
-#r |
|
|||||||||
!.0 |
2(2.(! |
#.( |
|
х(.!# |
.!-#.#2(# |
-0 |
1-(.( |
|
# |
S!26# - |
.,( |
#,# |
|
.,!W,( |
|
0 |
|
|||||
!-,l1 |
1u<4#,<( ( |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
!-!!!!!!B-i!!! B |
!!!E |
-!-!!! |
|
!!,; |
!! !!!!! |
|
!-i |
!! |
!!!a! !!! |
|
|||||||||
|
|
!!D!A!,В !! |
!!!DA! |
!!-!!! |
B |
!!!!!,; |
A! A!! |
КИ!, e !a!o!!!A! ! |
|
|||||||||||||
ЗАПОМНИ! |
!!!!!r |
|
!A!!!!r |
!!d! |
A! |
!,;A! |
!!!!!!! |
|
|
! |
!!-i!!!! |
|
!!! |
|
||||||||
i, |
,onD!a t! , |
!-!-i!!!! |
!!, |
!!d!A! |
|
! !!-!!! |
! |
|
|
|
|
o! |
|
|||||||||
|
|
|
|
|
|
|
|
|||||||||||||||
|
|
,;!!!! |
! |
!!!!!a!!!! |
|
!!A! |
!!!!! |
ЕТ!!! |
!!!!!! |
|
|
|
|
|
!!n |
y |
||||||
|
|
!!-A!! !!!!-i!AA! ,; |
A! !!! |
|
ntdtd |
!-!!! |
! |
|
|
|
A! !!!!r |
|
||||||||||
|
|
!!A!!!Е |
-i! !! !!-!!! |
! |
!!!So!!! |
A! d!A |
!!! |
A!!!A!!! |
! o!!!A! |
|
||||||||||||
|
|
|
!A!!!!r |
! |
! ЕТ !-!!-!!! |
B |
!!!!!,; |
|
|
И. Е! ЕD |
|
|
|
|||||||||
|
|
|
t, AssEmЫies |
|
|
Reference Manager - TestApplic t,on |
|
|
|
|
|
|||||||||||
|
|
|
' |
|
|
|
|
|
|
|
|
S.-dlp---oc ronPctnCdsld...so. |
E. |
.D. |
|
|
|
|||||
|
|
aocnc nm |
|
|
№те |
|
|
|
|
|
|
tDcna |
seodca |
|
|
|
|
|
|
|
||
|
|
dPtdeiel |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
s-O iut! ri |
|
|
|
|
|
|
|
|
|
|
|
iotDitle" |
|
|
|
|
|
|
|
ti Shared Projects
• СОМ
u eme,ot.
Рис. 20.4. Добавление ссылки в библиотеку классов
pриволоннтш лакоо мел дрелекиаоb на а тмвиролтлыкоf раьлоко кип оbинСt3bе лееавконнтш невтш дреомbо елнис екаооес меbертш оелорииb соп bел ло еаaе у иС вa ноf вт диЫоbомел лкя раееb о ваЫомйиекиеbомешТ
ы(
ББ
ю j |
( |
юa
ии
ГЛАВА 20 ,а ойтаIтcoбtи вя) тивиaвa чв оn)uви й т зи