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

Ждем ваших отзывов!
Вы, читатель этой книги, и есть главный ее критик. Мы ценим ваше мнение
ихотим знать, что было сделано нами правильно, что можно было сделать лучше и что еще вы хотели бы увидеть изданным нами. Нам и нтересны любые ваши замечания в наш адрес.
Мы ждем ваших комментариев и надеемся на них. Вы можете прислать нам бумажное или электронное письмо л ибо просто посетить наш веб-сайт и оста вить свои замечан ия там. Одним словом, любым удобным для вас способом дайте нам знать, нравится ли вам эта книга, а также выскажите свое мнение о
том, как сделать наши книги более интересными для вас.
Отправляя письмо ил и сообщение, не забудьте указать название книги и ее авторов, а также свой обратный адрес. М ы внимательно ознакомимся с вашим м нением и обязательно учтем его при отборе и подготовке к изданию новых книг.
Наши электронные адреса:
E-mail: лчк кедл.rч. |
t л . е мкtW |
WWW: (ttу щтWт? б д |
л.rч. t л . . чмкtW |
Введение 27


О с ·. ы
пр . а м м и ро-
пор ири-пм-р

В ЭТО Й Ч А СТ И . . .
)) |
Глава 1 , |
"Ваше первое консольное приложение на С#" |
)) |
Глава 2, |
"Работа с переменными" |
)) |
Глава 3, |
"Работа со строками" |
)) |
Глава 4, |
"Операторы" |
)) Глава 5, |
"Управление потоком выполнения" |
|
)) |
Глава б, |
"Глава для коллекционеров" |
)) |
Глава 7, |
"Работа с коллекциями" |
)) |
Глава 8, |
"Обобщенность" |
)) Глава 9, "Эти исключительные исключения" |
||
)) |
Глава 1 О, "Списки элементов с использованием |
|
|
перечислений" |
|
|
|
|

Ва ше первое |
|||||
п |
р |
и |
л |
ож |
н и е |
|
|
|
е |
|
к |
с |
ь |
ное |
он ол |
|
||
н а С# |
|
|
В ЭТОЙ ГЛ А В Е |
. . . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
- )) Краткое введение в п роrраммировани |
е-: ' |
,,-, '".; -:: - - Х , ' |
|
|
|||||||||||||||
|
- |
|
|
|
|
|
|
||||||||||||
) |
Созд ние лророго консопьного прило |
ия |
_ - , , . __ |
|
|
|
|||||||||||||
) |
|
|
|
|
|
|
|
|
|
|
|
|
, |
|
|
|
|
|
|
)) |
Изучение консольного п риложения |
|
|
|
|
|
|
|
|
||||||||||
иоро |
|
) . , |
е, |
|
|
|
|
М |
|
|
|
|
|
|
|
||||
|
|
|
Е |
|
|
|
|
|
|
|
|
· • |
|
|
|
|
|||
)) Сохранеыие кода для |
последующей paбo!J'til; _ _ |
|
|
|
|
||||||||||||||
|
еаиЛ рВРаоад морВи иуЕРеироаооО о еиреОваосРро |
о еиреОваосЕдг |
|||||||||||||||||
|
|
АудеРро аеВвЙРА еиреОваосЕдЛ |
aуде |
|
ОесиоуЕиооаоaеРе Enоо |
||||||||||||||
|
·Рсе |
ч о |
#e Г( 1.1'Я |
.9 |
,ЗДРаор ад оиуeРeоао есиоатв |
есиасРррт > |
|||||||||||||
ЕРеооРЕЕтв |
ЕР Аудеод., |
|
|
|
|
|
|
|
#11.1) _ |
|
|
|
|||||||
Компь |
ют |
|
|
|
|
|
|
, |
fо |
dпо, |
|
, |
|
||||||
' |
ернъ e, ыео языки |
|
С# и'l |
|
_ рр, 'lр_ |
g |
р |
hi |
|
||||||||||
|
Ч"1,,-.,,,#() |
|
|
,s_'l,'l,#,--"1 |
|
,з,,,(),. |
|
|
-"1 |
|
-#,#()"1ц,-"1 |
,,s,"1. |
,"1,"1a-'l, |
1<#,"1r |
|||||
,#,л |
Ч"1 ,,-.,,,#(), |
|
_#,л.,,, |
,"1л "1 1<#, |
'l1Y1 |
,()"1,,:, |
|
а, ()J-,s,-,n |
,()#_#,лn |
,"1-#1<-"1В |
|||||||||
'l _#,л.,,, |
,,# |
"11<#-- |
,з,,,()"1 |
а'l |
1<#, _л,- |
|
# |
|
,#, |
,,,()## |
В_ |
|
|
|
|||||
|
Ч ,"1.л,#-'l.,, |
|
,"1 ,,-.,,,#(), |
|
-# ,"1-'l,л.,,, |
|
|
-'l #М"1,"1n"1.#1 1,: |
-л 1<#,"1,#1<#,,'l. |
||||||||||
,:-,,_ |
ужл•,, |
,"1.#,# |
,s_'l,,#--"1 |
,,.-л,- |
|
,-# |
|
#,()л,_л |
,"1. |
,#,#c"1- ,"1-,"1,,:#, |
|||||||||
,-# ,"1-,"1-'l,- |
|
_(),s1 1,sп ,()"1,,"1 |
,()"1'l--#, |
|
,: #1 1"1 'l,ц |
_ ужл, |
,#,#c"1-# ()л "1,л#, ,()"1h |
||||||||||||
#1<-,. ,"1,,-.,,,#()_ |
|
|
t"1,,s1<л#,,,: |
1<,"1 "1, |
,,-.,,,#() |
,,л_##, |
1<#,"1,#1<#,,"1. |
()#1<-.,, |
|||||||||||
ф#,п ()#1<- |
,"1-'l,л#, |
|
,"1,,-.,,,#()-л,: |
|
рД |
|
|
л -# |
,л, |
,"1,,-.,,,#() |
|
|
