
Книга посвящена программированию на языке C# для платформы Microsoft .NET, начиная с основ языка и разработки программ для работы в режиме командной строки и заканчивая созданием современных приложений различной сложности (баз данных, графических программ и др.). Материал сопровождается большим количеством практических примеров. Подробно описывается логика выполнения каждого участка программы. Уделено внимание вопросам повторного использования кода. Компакт-диск содержит примеры программ, дополнительную справочную информацию, а также готовые компоненты, тестовые программы и изображения.
ЗАКАЗАТЬ КНИГУ СОДЕРЖАНИЕ ВВЕДЕНИЕ
| Оглавление Введение | 1 |
| Благодарности | 5 |
| Бонус | 5 |
| Структура книги | 5 |
Глава 1. Введение в .NET | 7 |
| 1.1. Платформа .NET | 7 |
| 1.1.1. Кубики .NET | 8 |
| 1.1.2. Сборки | 9 |
| 1.1.3. Язык программирования | 11 |
| 1.2. Обзор среды разработки Visual Studio .NET | 11 |
| 1.2.1. Работа с проектами и решениями | 12 |
| 1.2.2. Панель Server Explorer | 16 |
| 1.2.3. Панель Toolbox | 17 |
| 1.2.4. Панель Solution Explorer | 20 |
| 1.2.5. Панель Class View | 23 |
| 1.2.6. Панель Properties | 23 |
| 1.2.7. Работа с файлами | 24 |
| 1.3. Простейший пример .NET-приложения | 25 |
| 1.3.1. Проект на языке C# | 25 |
| 1.3.2. Компиляция и запуск проекта на языке C# | 26 |
| 1.4. Компиляция приложений | 28 |
| 1.5. Поставка сборок | 30 |
| 1.6. Формат исполняемого файла .NET | 34 |
Глава 2. Основы C# | 36 |
| 2.1. Комментарии | 36 |
| 2.2. Переменные | 37 |
| 2.3. Именование | 40 |
| 2.4. Работа с переменными | 44 |
| 2.4.1. Строки и символы | 48 |
| 2.4.2. Массивы | 50 |
| 2.4.3. Перечисления | 53 |
| 2.5. Простейшая математика | 56 |
| 2.6. Логические операции | 62 |
| 2.6.1. Условный оператор if | 62 |
| 2.6.2. Условный оператор switch | 65 |
| 2.6.3. Сокращенная проверка | 66 |
| 2.7. Циклы | 66 |
| 2.7.1. Цикл for | 67 |
| 2.7.2. Цикл while | 70 |
| 2.7.3. Цикл do..while | 71 |
| 2.7.4. Цикл foreach | 71 |
| 2.8. Управление циклом | 73 |
| 2.8.1. Оператор break | 73 |
| 2.8.2. Оператор continue | 74 |
| 2.9. Константы | 75 |
Глава 3. Объектно-ориентированное программирование | 77 |
| 3.1. Объекты в C# | 77 |
| 3.2. Свойства | 81 |
| 3.3. Методы | 86 |
| 3.3.1. Описание методов | 88 |
| 3.3.2. Параметры методов | 91 |
| 3.3.3. Перегрузка методов | 97 |
| 3.3.4. Конструктор | 98 |
| 3.3.5. Статичность | 102 |
| 3.3.6. Рекурсивный вызов методов | 105 |
| 3.3.7. Деструктор | 107 |
| 3.4. Метод Main() | 109 |
| 3.5. Пространства имен | 111 |
| 3.6. Начальные значения переменных | 113 |
| 3.7. Объекты только для чтения | 114 |
| 3.8. Объектно-ориентированное программирование | 114 |
| 3.8.1. Наследование | 115 |
| 3.8.2. Инкапсуляция | 116 |
| 3.8.3. Полиморфизм | 118 |
| 3.9. Наследование от класса Object | 119 |
| 3.10. Переопределение методов | 121 |
| 3.11. Обращение к предку из класса | 124 |
| 3.12. Вложенные классы | 125 |
| 3.13. Область видимости | 127 |
| 3.14. Ссылочные и простые типы данных | 129 |
| 3.15. Абстрактные классы | 130 |
| 3.16. Проверка класса объекта | 133 |
Глава 4. Консольные приложения | 134 |
| 4.1. Украшение консоли | 135 |
| 4.2. Работа с буфером консоли | 137 |
| 4.3. Окно консоли | 139 |
| 4.4. Запись в консоль | 139 |
| 4.5. Чтение данных из консоли | 142 |
Глава 5. Визуальный интерфейс | 144 |
| 5.1. Визуальное приложение | 144 |
| 5.1.1. Пространства имен | 146 |
| 5.1.2. Потоки | 148 |
| 5.1.3. Класс Application | 149 |
| 5.2. Наследник Form для главной формы | 150 |
| 5.2.1. Ресурсы программы | 150 |
| 5.2.2. Файл для логики модуля | 151 |
| 5.2.3. Именование формы | 153 |
| 5.2.4. Код, сгенерированный дизайнером | 153 |
| 5.2.5. Hello Visual World | 157 |
| 5.3. Свойства формы | 158 |
| 5.4. Методы формы | 164 |
| 5.5. События на примере формы | 164 |
| 5.6. Компоненты .NET | 168 |
| 5.7. Общие компоненты | 171 |
| 5.7.1. Button | 172 |
| 5.7.2. CheckBox | 175 |
| 5.7.3. CheckedListBox | 175 |
| 5.7.4. ComboBox | 178 |
| 5.7.5. DateTimePicker | 180 |
| 5.7.6. Label и LinkLabel | 182 |
| 5.7.7. ListBox | 183 |
| 5.7.8. ListView | 183 |
| 5.7.9. PictureBox | 189 |
| 5.7.10. ProgressBar | 190 |
| 5.7.11. RadioButton | 191 |
| 5.7.12. TextBox | 192 |
| 5.7.13. TreeView | 192 |
| 5.8. Контейнеры | 198 |
| 5.8.1. GroupBox | 198 |
| 5.8.2. Panel | 199 |
| 5.8.3. TabControl | 199 |
| 5.8.4. FlowLayoutPanel и TableLayoutPanel | 200 |
| 5.9. Меню и панели инструментов | 202 |
| 5.9.1. MenuStrip | 202 |
| 5.9.2. ContextMenuStrip | 205 |
| 5.9.3. ToolStrip | 206 |
| 5.9.4. StatusStrip | 208 |
Глава 6. Продвинутое программирование | 209 |
| 6.1. Приведение и преобразование типов | 209 |
| 6.2. Объекты простых типов данных | 211 |
| 6.3. Перечисления Enum | 212 |
| 6.4. Структуры | 216 |
| 6.5. Дата и время | 218 |
| 6.6. Класс строк | 221 |
| 6.7. Перегрузка операторов | 223 |
| 6.7.1. Математические операторы | 224 |
| 6.7.2. Операторы сравнения | 227 |
| 6.7.3. Операторы преобразования | 228 |
| 6.8. Тип var | 230 |
| 6.9. Шаблоны | 231 |
Глава 7. Интерфейсы | 236 |
| 7.1. Объявление интерфейсов | 237 |
| 7.2. Реализация интерфейсов | 238 |
| 7.3. Использование реализации интерфейса | 240 |
| 7.4. Интерфейсы в качестве параметров | 243 |
| 7.5. Перегрузка интерфейсных методов | 244 |
| 7.6. Наследование | 247 |
| 7.7. Клонирование объектов | 247 |
Глава 8. Массивы | 250 |
| 8.1. Базовый класс для массивов | 250 |
| 8.2. Невыровненные массивы | 252 |
| 8.3. Динамические массивы | 254 |
| 8.4. Индексаторы массива | 257 |
| 8.5. Интерфейсы массивов | 258 |
| 8.5.1. Интерфейс IEnumerable | 259 |
| 8.5.2. Интерфейсы IComparer и IComparable | 262 |
| 8.6. Оператор yield | 265 |
| 8.7. Стандартные списки | 266 |
| 8.7.1. Класс Queue | 267 |
| 8.7.2. Класс Stack | 268 |
| 8.7.3. Класс Hashtable | 268 |
| 8.8. Типизированные массивы | 270 |
Глава 9. Обработка исключительных ситуаций | 274 |
| 9.1. Исключительные ситуации | 274 |
| 9.2. Исключения в C# | 277 |
| 9.3. Оформление блоков try | 280 |
| 9.4. Ошибки в визуальных приложениях | 282 |
| 9.5. Генерирование исключительных ситуаций | 283 |
| 9.6. Иерархия классов исключений | 285 |
| 9.7. Собственный класс исключения | 286 |
| 9.8. Блок finally | 289 |
| 9.9. Переполнение | 290 |
Глава 10. События в C# | 294 |
| 10.1. Делегаты | 294 |
| 10.2. События и их вызов | 295 |
| 10.3. Использование собственных делегатов | 299 |
| 10.4. Делегаты изнутри | 304 |
| 10.5. Анонимные методы | 305 |
| 10.6. Динамическое создание компонентов | 306 |
Глава 11. Формы | 309 |
| 11.1. Диалоговые окна | 310 |
| 11.2. Редактирование объектов | 314 |
| 11.3. Специфичный результат | 319 |
| 11.4. Немодальные окна | 322 |
| 11.5. Многодокументный интерфейс | 322 |
Глава 12. Небезопасное программирование | 326 |
| 12.1. Разрешение небезопасного кода | 327 |
| 12.2. Указатели | 328 |
| 12.3. Память | 332 |
| 12.4. Системные функции | 334 |
Глава 13. Графика | 337 |
| 13.1. Введение в Graphics | 337 |
| 13.2. Рисование по событию Paint | 340 |
| 13.3. Рисование без события Paint | 341 |
| 13.4. Цвета | 343 |
| 13.5. Перья | 345 |
| 13.6. Кисти | 348 |
| 13.7. Работа с картинками | 349 |
| 13.8. Графический дизайнер | 354 |
| 13.9. Рисование элементов списка ListBox | 359 |
Глава 14. Хранение информации | 364 |
| 14.1. Реестр | 364 |
| 14.2. Файловая система | 370 |
| 14.3. Текстовые файлы | 375 |
| 14.4. Бинарные файлы | 378 |
| 14.5. XML-файлы | 382 |
| 14.5.1. Создание XML-документов | 383 |
| 14.5.2. Чтение XML-документов | 388 |
| 14.6. Потоки Stream | 392 |
| 14.7. Потоки MemoryStream | 393 |
| 14.8. Сериализация | 395 |
| 14.9. Отключение сериализации | 398 |
| 14.10. Особенности сериализации | 399 |
| 14.11. Управление сериализацией | 402 |
Глава 15. Многопоточность | 405 |
| 15.1. Класс Thread | 406 |
| 15.2. Передача параметра в поток | 410 |
| 15.3. Потоки с использованием делегатов | 411 |
| 15.4. Конкурентный доступ | 414 |
| 15.5. Доступ к компонентам | 417 |
| 15.6. Пул потоков | 420 |
| 15.7. Домены приложений .NET | 421 |
Глава 16. Базы данных | 425 |
| 16.1. ADO.NET | 425 |
| 16.2. Строка подключения | 428 |
| 16.3. Подключение к базе данных | 433 |
| 16.4. Пул соединений | 435 |
| 16.5. Выполнение команд | 437 |
| 16.6. Транзакции | 439 |
| 16.7. Наборы данных | 441 |
| 16.8. Чтение результата запроса | 446 |
| 16.9. Работа с процедурами | 448 |
| 16.10. Методы OleDbCommand | 454 |
| 16.11. Отсоединенные данные | 456 |
| 16.12. Адаптер DataAdapter | 460 |
| 16.12.1. Конструктор | 461 |
| 16.12.2. Получение результата запроса | 461 |
| 16.12.3. Сохранение изменений в базе данных | 462 |
| 16.12.4. Связанные таблицы | 465 |
| 16.12.5. Добавление данных | 466 |
| 16.12.6. Удаление данных | 468 |
| 16.13. Набор данных DataSet | 469 |
| 16.13.1. Хранение данных в DataSet | 469 |
| 16.13.2. Класс DataRow | 472 |
| 16.13.3. Класс DataColumn | 474 |
| 16.13.4. Таблица DataTable | 476 |
| 16.14. Таблицы в памяти | 477 |
| 16.15. Выражения | 479 |
| 16.16. Ограничения | 481 |
| 16.17. Манипулирование данными | 483 |
| 16.17.1. Добавление строк | 483 |
| 16.17.2. Редактирование данных | 485 |
| 16.17.3. Поиск данных | 487 |
| 16.17.4. Удаление строк | 487 |
| 16.18. Связанные данные | 488 |
| 16.19. Ограничение внешнего ключа | 492 |
| 16.20. Фильтрация данных | 500 |
| 16.21. Представление данных DataView | 502 |
| 16.22. Схема данных | 506 |
Глава 17. Повторное использование кода | 509 |
| 17.1. Библиотеки | 509 |
| 17.2. Создание библиотеки | 510 |
| 17.3. Приватные сборки | 514 |
| 17.4. Общие сборки | 517 |
| 17.5. Создание пользовательских компонентов | 519 |
| 17.6. Установка компонентов | 527 |
Глава 18. Удаленное взаимодействие | 529 |
| 18.1. Удаленное взаимодействие в .NET | 530 |
| 18.2. Структура распределенного приложения | 531 |
| 18.3. Общая сборка | 533 |
| 18.4. Сервер | 534 |
| 18.5. Клиент | 538 |
| Заключение | 541 |
| Приложение. Описание компакт-диска | 542 |
| Список литературы | 543 |
| Предметный указатель | 544 |
| X Оглавление Оглавление IX |