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

|
|
! !!.i!c |
!e! |
-!!!! |
!!!!!!!!!! |
|
|
|
!!d!!!! |
|
!!!!!!!c |
|
D!!D!.i!.i! |
eе |
оm |
||||||||||||||
|
mitе M!!! |
|
|
|
eeеm !D! |
|
|
tАлe |
!D! ! |
!D!!! ! |
!!!!!!.i!DD!!c |
!,n |
|||||||||||||||||
|
!.i!,;! |
! |
!!!,; |
|
!!!.i!!!!.i!D!! |
!.iD!B!.i!DD |
e |
eеm!!!!!!!Дж!-С,D!!c !D! |
|||||||||||||||||||||
СОВЕТ |
ti |
|
mt |
|
n!!! D !.i!.i! !D!!!!-!! |
|
Иe |
tеttоmmit!!a,;!е |
,-!DeD!c |
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
!.i, ! |
|
e |
|
еem !!!.i!!!!.i!D!! |
|
|
!.iD!B!.i!DD e |
eеm!! |
!!,В D!.i!ND!!d!!N |
|
||||||||||||||||||
|
!!D!.i!.i!D!.iM!!!!.i!D!!!!.i, |
!!D!!!!!!d |
НD!!B!!!N!! |
rDe!eD!! |
|
!!D!!rDn |
|||||||||||||||||||||||
|
d!E |
|
eе |
|
оmmit!Dе !!! !.i!-!.i!D!!!!N |
!!!!!D!.i!.i!Dd |
|
|
|
|
|
|
|||||||||||||||||
|
П!.i!! !.iM!!D!.i! |
!!!! |
|
!! |
-!!c |
!!!.i!,;!!! |
t!!!c!! |
!!, |
M!!!!,o |
!!, |
D!!d!!N |
|
|||||||||||||||||
! D!.i!.i!D!!Дж!,!!M!!Дж!.i!!!,;!! !!!!!!.i!DD!!c |
!!!!! |
|
! |
!.iD!B!.i!D! e eеm !!!!!М |
|||||||||||||||||||||||||
!!rD!!,!! |
k!j iЧEtyf r!DM!!!! |
|
!.iM!!DdП!.i!! !!! |
e!!! |
DD!!!!-,;!!!.i, ,-!!.i!!M!!c |
|
|||||||||||||||||||||||
D,r!!D!!!.i!c |
iWtLA!ТEtyfr!DM!!!! |
!.iM!!D!r |
!!D!.i!.iDИe |
tеttоmmitD!е !!ЕТ! |
|
||||||||||||||||||||||||
!! |
!-!!.i!!M!!c |
!.i!!!D!!!.i!D,;Ee!! |
|
!.iD!B!.i!D, |
e |
еem !.i!!!.i!,;!!! |
|
ti |
m t |
t!d!d |
|||||||||||||||||||
!!!.i!,;!!!! |
Иe |
|
|
еttоmmitи дсбране |
ыодткчььчн sро редоьвбыроееьен оьвчкeе |
||||||||||||||||||||||||
рп нВеi окчее w чСaокчььnтчlдпа |
ьчн oчьезядцсчььнчв саечкоьes тчт квоьдекчвeг |
||||||||||||||||||||||||||||
uu |
?K |
bb |
|
g |
K |
|
bl |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
°":b ilb°": |
K |
?K |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
wl |
l |
|
>]K |
|
Kblб |
|
|
K |
|
|
uu |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
lb |
|
lli |
?] |
K |
|
K blQ |
|
|
lб uu |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
n,!! |
!D!.i!.i eеоmmitе!! |
|
!! |
!DN!!!!c!.i, |
DdNiМ! We!Nc-ie!! !!!!c |
|
||||||||||||||||||||||
|
!!!.i!,;! |
!! |
|
D!.i!!,;ВM!! !-С,D!!!, |
!D! |
|
ti |
mt |
D-Dr!D!! |
!!D!.i!.i! |
|||||||||||||||||||
|
|
eеоmmitеz! dr!! |
!,!.i!c |
|
!D!.id!!!!!, |
|
t!.i,r!D!!, !!!! |
!D!.i!.iD!D! |
|
||||||||||||||||||||
ПОДРОБНОСТИ !!a! |
!!D!.i!.iDD!! |
!.i-,!!! |
-Dr!D!a! !!D!.i!.iDD!!,!! !D -!r,!D!.i!!!.i!c D!, |
|
|||||||||||||||||||||||||
ТЕХНИЧЕСКИЕ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
!!!,; |
!!,a!! |
|
|
|
D!.i!.i!!!! |
!! |
|
-!!c |
!!!!M!!! |
|
!D! t |
e tdНD!!! |
!!! |
|||||||||||||||
|
MD!!DD!!! |
|
!! |
D!.i!.iD!!!!,!!.i!D,;!! |
!,!.i!,;!,; |
!rD!! |
!,;!!! |
!D!.i!!!!DD!!,d |
|||||||||||||||||||||
|
z!! |
!!M!!,; |
|
!!!!!!!!,;!!!.i, |
|
|
!!!D!c |
|
!!D!.i!.i! |
!D!.id!!,!!!!!Р |
|
|
!!!c!! |
|
|||||||||||||||
|
!!.i!! |
!!! |
!r!DMD!c!, |
!!!!! |
|
Dr!DM!!! |
!!, |
!D!.i!!!,DD!!,d l!!! |
|
!r |
!.i!!n |
||||||||||||||||||
|
!.i!-!D |
!!!!,!.i!DD!!c |
|
!!,;a,!,; |
!!!,; |
D!!B |
|
!!.i-!!!! |
!!!.i!,;! |
! |
M!!!D! |
||||||||||||||||||
|
-or,D,a! ! D!.i!.iDtD!!EMD, !,!!!D!.i!.i |
D!!B |
|
!!.i-!!!!o |
!,!!!!!c |
e!! |
|||||||||||||||||||||||
|
e!!!!!!! |
|
!D! |
Але |
|
tDе!!e |
!D!Дж ti |
|
tmНD!!! !-!Dr!!i |
|
D! |
!! |
|
||||||||||||||||
|
!,;MD!!! |
|
!!D!!!B |
,;!!D!!c |
!!!.i |
!D !r |
!!!D!c!!a! |
|
!,!! |
!D!.i!.iDDДж!! |
! |
||||||||||||||||||
|
D!!!, |
|
!!!!!!D!DeD, |
|
!,!.i!,;! |
|
!r |
D!!d!!a! |
!!!!!D!.i!.iDd |
,!!M!!Дж!,!.i!,;! |
|
||||||||||||||||||
|
!!! e!!! |
!Dr!!d!! |
! |
!!, |
!!,;a!N !!D!.i!.i!DD!.i-!!!!d |
НD!!! |
!!d!!!! |
!! |
|
||||||||||||||||||||
|
!!!D! |
c!!Дж!! |
!!! |
!-!!.i!!M!DD!! |
- |
!cd,;E !.i!!!!!c |
-!r!!D!.i!!!.i!! |
|
|
||||||||||||||||||||
protected internal: более изощренная защита |
|
|
|
|
|
|
|||||||||||||||||||||||
|
с#.41 g.#-#),0 |
24Ж!6!W! .. 4114 |
|
|
e |
|
ppima)#Н .,!1,! |
|
|
Мimap Т |
4 |
||||||||||||||||||
|
Мimap |
Тд |
|
|
|
|
М60 e,#-и14-0- .!246.1#,# |
)!6!# |
(Ж-#,#)(# |
|
g.#-#) |
||||||||||||||||||
,4-и.!1,1.)0- |
|
6 64ch#3.,!W,4 |
--# |
.7B#61# 1.!6! |
|
Мima Т 6 !.p()!B.1 |
|
|
ГЛАВА 20 Пространства имен и библиотеки 469