С# 4.0 на примерах
Бен Ватсон
На практических примерах рассмотрено программирование на языке Microsoft С# 4.0, начиная с основ языка и заканчивая решением типичных задач с помощью .NET Framework. Показано создание эффективных классов, интерфейсов и типов, а также программного кода, допускающего многократное использование. Описаны приемы обработки данных, основанные на применении коллекций, сериализации, баз данных и XML. Рассмотрена реализация пользовательского интерфейса с применением технологий WinForms и WPF, а также создание веб-приложений на основе технологий ASP.NET и Silverlight. Показано применение на практике новых возможностей языка С# 4.0. Уделено внимание взаимодействию с ОС Windows и системным ПО, использованию шаблонов для разработки сложных программ и другое. Приведено более 200 готовых решений, оптимальных технических приемов и примеров проверенного кода.
Для программистов.
Издательство: БХВ-Петербург, 2011 г.
ISBN 978-5-9775-0608-3, 978-0-672-33063-6
Количество страниц: 608.
Содержание книги «С# 4.0 на примерах»:
- 2 Об авторе
- 3 Благодарности
- 5 Введение
- 5 Краткий обзор книги
- 5 Как извлечь максимум пользы из этой книги
- 7 Как углубить и расширить свои знания
- 9 ЧАСТЬ I. ОСНОВЫ ПРОГРАММИРОВАНИЯ НА ЯЗЫКЕ C#
- 11 Глава 1. Основы работы с типами
- 11 Создание класса
- 12 Определение полей, свойств и методов
- 14 Определение статических членов
- 14 Написание конструктора
- 15 Инициализация свойств при конструировании
- 16 Применение модификаторов const и readonly
- 16 Повторное использование кода в нескольких конструкторах
- 17 Создание производного класса
- 18 Вызов конструктора базового класса
- 18 Переопределение метода или свойства базового класса
- 21 Создание интерфейса
- 22 Реализация интерфейсов
- 23 Создание структуры
- 24 Создание анонимного типа
- 25 Предотвращение создания экземпляра с помощью абстрактного класса
- 25 Интерфейс или абстрактный базовый класс?
- 27 Глава 2. Создание типов с разносторонней функциональностью
- 27 Форматирование типа методом ToString()
- 31 Создание типов, допускающих выяснение равенства
- 32 Создание типов, хешируемых методом GetHashCode()
- 33 Создание сортируемых типов
- 34 Создание индекса у типов
- 36 Уведомление клиентов об изменении состояния объекта
- 37 Перегрузка операций
- 38 Преобразование одного типа в другой
- 40 Предотвращение наследования
- 40 Разрешение типу значения принимать значение null
- 42 Глава 3. Общие принципы кодирования
- 42 Объявление переменных
- 43 Откладывание проверки типов до этапа выполнения (динамические типы)
- 45 Применение динамической типизации для упрощения взаимодействия с СОМ
- 46 Объявление массивов
- 46 Создание многомерных массивов
- 47 Создание псевдонима для пространства имен
- 48 Применение условной операции (?:)
- 48 Применение операции проверки на null (??)
- 49 Добавление методов в существующие типы с использованием методов расширения
- 51 Вызов методов с параметрами по умолчанию
- 51 Вызов методов с именованными параметрами
- 52 Откладывание вычисления значения до момента обращения к нему
- 53 Создание контрактов кода
- 57 Глава 4. Исключения
- 57 Возбуждение исключения
- 57 Обработка исключения
- 58 Обработка нескольких исключений
- 59 Повторное возбуждение исключения
- 60 Практически гарантированное выполнение кода с использованием блока finally
- 61 Получение информации от исключения
- 63 Создание собственного исключения
- 65 Перехват необработанных исключений
- 69 Советы по работе с исключениями
- 70 Глава 5. Числа
- 70 Выбор между типами float, double и decimal
- 71 Работа с очень большими числами (тип BigInteger)
- 72 Работа с комплексными числами
- 74 Форматирование числа в строку
- 78 Преобразование строки в число
- 79 Преобразование числа из одной системы счисления в другую
- 81 Преобразование числа в байты (и обратно)
- 82 Выяснение четности числа
- 83 Выяснение, является ли число степенью двойки
- 83 Выяснение, является ли число простым
- 84 Подсчет количества установленных битов
- 84 Пересчет градусов в радианы
- 85 Округление
- 87 Генерирование «хороших» случайных чисел
- 88 Генерирование уникальных идентификационных номеров (GUID)
- 90 Глава 6. Перечисления
- 90 Объявление перечисления
- 91 Объявление флагов в виде перечисления
- 92 Выяснение, установлен ли флаг
- 92 Преобразование перечисления в целое (и обратно)
- 93 Проверка допустимости значений перечисления
- 93 Получение списка значений перечисления
- 93 Преобразование строки в перечисление
- 94 Добавление метаданных к перечислению с помощью методов расширения
- 96 Советы по использованию перечислений
- 97 Глава 7. Строки
- 97 Преобразование строки в байтовое представление (и обратно)
- 98 Создание собственной схемы кодирования
- 102 Корректное сравнение строк
- 103 Корректная смена регистра
- 103 Распознавание пустых строк
- 104 Конкатенация строк: обязательно ли использовать класс StringBuilder?
- 106 Конкатенация элементов коллекции в одну строку
- 107 Добавление символа новой строчки
- 107 Разбивка строки
- 109 Преобразование двоичных данных в строку (кодировка base-64)
- 110 Изменение порядка слов на обратный
- 111 Естественная сортировка строк
- 116 Глава 8. Регулярные выражения
- 116 Поиск в тексте
- 117 Извлечение фрагментов текста
- 117 Замена фрагмента текста
- 118 Проверка допустимости
- 120 Повышение производительности регулярных выражений
- 121 Глава 9. Универсальные типы
- 121 Создание универсального списка
- 122 Создание универсального метода
- 123 Создание универсального интерфейса
- 124 Создание универсального класса
- 125 Создание универсального делегата
- 126 Работа с несколькими универсальными типами
- 127 Накладывание ограничений на универсальный тип
- 129 Преобразование IEnumerable в IEnumerable (ковариантность)
- 130 Преобразование IComparer в IComparer (контравариантность)
- 131 Создание кортежей (пар, троек и т. д.)
- 133 ЧАСТЬ II. ОБРАБОТКА ДАННЫХ
- 135 Глава 10. Коллекции
- 135 Выбор подходящего класса-коллекции
- 137 Инициализация коллекции
- 137 Перебор элементов коллекции без привязки к ее реализации
- 138 Создание собственной коллекции
- 142 Создание собственных итераторов для коллекции
- 145 Изменение порядка элементов массива на обратный
- 146 Изменение порядка элементов связного списка на обратный
- 147 Извлечение уникальных элементов из коллекции
- 147 Подсчет количества вхождений элемента
- 148 Реализация очереди с приоритетами
- 152 Создание префиксного дерева
- 156 Глава 11. Файлы и сериализация
- 156 Создание, чтение и запись файла
- 159 Удаление файла
- 159 Комбинирование потоков данных (сжатие файла)
- 161 Выяснение размера файла
- 161 Получение информации, связанной с безопасностью
- 162 Проверка существования файла и каталога
- 163 Список дисков
- 164 Список каталогов и файлов
- 165 Обзор каталогов
- 165 Поиск файла или каталога
- 167 Манипуляции с путями к файлам
- 169 Создание уникальных или временных имен для файлов
- 169 Отслеживание изменений в файловой системе
- 171 Получение пути к каталогам My Documents, My Pictures и т. д
- 171 Сериализация объектов
- 174 Сериализация в буфер в памяти
- 175 Хранение данных приложения, имеющего ограниченные права
- 177 Глава 12. Работа в сетях и во Всемирной паутине
- 177 Определение IP-адреса по имени хоста
- 178 Выяснение имени хоста и IP-адреса у данного компьютера
- 178 «Пингование» компьютера
- 179 Выяснение информации о сетевой карте
- 179 Создание сервера и клиента на базе TCP/IP
- 183 Отправка электронного письма по протоколу SMTP
- 184 Загрузка содержимого веб-страницы по протоколу HTTP
- 188 Выгрузка файла по протоколу FTP
- 188 Удаление тегов из HTML-кода
- 189 Встраивание веб-браузера в приложение
- 191 Прием RSS-ленты новостей
- 194 Динамическое генерирование RSS-ленты новостей в IIS
- 196 Взаимодействие между процессами на одном компьютере (WCF)
- 203 Взаимодействие между двумя компьютерами в одной сети (WCF)
- 204 Взаимодействие через Интернет (WCF)
- 206 Обнаружение служб на этапе выполнения (WCF)
- 210 Глава 13. Базы данных
- 210 Создание базы данных в Visual Studio
- 212 Соединение с базой и чтение данных
- 218 Добавление данных в таблицу
- 219 Удаление данных из таблицы
- 219 Выполнение хранимой процедуры
- 220 Транзакции
- 222 Связывание данных с элементом управления при помощи класса DataSet
- 230 Выяснение доступности соединения с базой данных
- 231 Автоматическое отображение данных на объекты с помощью платформы Entity Framework
- 234 Глава 14. Язык XML
- 234 Сериализация объекта в XML и десериализация его
- 238 Создание XML-документа «с нуля
- 240 Чтение XML-файла
- 242 Проверка корректности XML-документа
- 243 Выдача запроса к XML-документу с помощью XPath
- 245 Преобразование информации из базы данных в XML-документ
- 246 Преобразование XML-документа в HTML-документ
- 249 ЧАСТЬ III. Взаимодействие с пользователем
- 251 Глава 15. Делегаты, события и анонимные методы
- 251 Динамический вызов метода
- 253 Подписка на событие
- 254 Публикация события
- 256 Гарантия обновления пользовательского интерфейса в потоке пользовательского интерфейса
- 258 Присваивание анонимного метода делегату
- 259 Использование анонимных методов в качестве простых обработчиков событий
- 261 Использование преимуществ контравариантности
- 264 Глава 16. Технология Windows Forms
- 264 Создание модальных и немодальных форм
- 265 Добавление строки меню
- 268 Динамический перевод пунктов меню в неактивное состояние
- 268 Добавление строки состояния
- 269 Добавление панели инструментов
- 270 Создание интерфейса, включающего в себя подокно
- 271 Наследование формы
- 275 Создание собственного элемента управления
- 280 Применение таймера
- 281 Использование общих и пользовательских настроек конфигурации
- 284 Эффективное использование элемента ListView в виртуальном режиме
- 286 Наклон колесика мыши для горизонтальной прокрутки
- 290 Реализация Cut и Paste
- 295 Автоматический сброс индикатора ожидания
- 296 Глава 17. Графика с применением Windows Forms и GDI+
- 296 Определение цвета
- 297 Использование системного элемента управления для выбора цвета
- 297 Преобразование цветов между системами RGB и HSV
- 301 Рисование фигур
- 304 Создание перьев
- 306 Создание кистей с произвольными характеристиками
- 308 Преобразования
- 310 Рисование текста
- 310 Расположение текста по диагонали
- 310 Вывод изображений
- 311 Вывод прозрачных изображений
- 312 Рисование в буфере
- 312 Прямое обращение к пикселам для повышения эффективности
- 314 Рисование со сглаживанием
- 315 Перерисовка без мерцания
- 316 Изменение размеров изображения
- 316 Создание миниатюры
- 318 Захват многоэкранного изображения
- 320 Вычисление расстояния от указателя мыши до заданной точки
- 320 Выяснение местоположения точки относительно прямоугольника
- 321 Выяснение местоположения точки относительно круга
- 321 Выяснение местоположения точки относительно эллипса
- 322 Выяснение факта пересечения двух прямоугольников
- 322 Печать и предварительный просмотр
- 328 Глава 18. WPF
- 328 Открытие окна
- 329 Выбор компоновки интерфейса
- 330 Добавление строки меню
- 331 Добавление строки состояния
- 332 Добавление панели инструментов
- 333 Использование стандартных команд
- 333 Использование нестандартных команд
- 336 Перевод команд из неактивного состояния в активное и обратно
- 337 Сворачивание и разворачивание группы элементов управления
- 338 Реагирование на события
- 339 Отделение внешнего вида от функциональности
- 340 Применение триггеров для смены стилей на этапе выполнения
- 341 Связывание свойств элемента управления с другим объектом
- 346 Форматирование значений при связывании данных
- 346 Преобразование типов значений при связывании данных
- 348 Связывание с коллекцией
- 348 Контроль за представлением связанных данных
- 349 Определение внешнего вида элементов управления с помощью шаблонов
- 351 Анимирование свойств элементов
- 352 Отображение трехмерной графики
- 355 Размещение видео на поверхности трехмерной фигуры
- 358 Размещение интерактивных элементов управления на поверхности трехмерной фигуры
- 362 Применение WPF в приложении WinForms
- 363 Применение WinForms в WPF-приложении
- 364 Глава 19. ASP.NET
- 364 Просмотр отладочной и трассировочной информации
- 366 Выяснение возможностей браузера
- 367 Перенаправление на другую страницу
- 368 Аутентификация с помощью формы для входа пользователя в систему
- 372 Использование главных страниц для достижения единства оформления
- 373 Добавление меню
- 374 Связывание данных с элементом управления GridView
- 376 Создание пользовательского элемента управления
- 380 Создание гибкого пользовательского интерфейса с элементами Web Parts
- 385 Создание простой страницы с использованием технологии AJAX
- 387 Проверка допустимости данных
- 392 Поддержание состояния приложения
- 393 Поддержание состояния пользовательского интерфейса
- 393 Поддержание пользовательских данных на протяжении сеанса
- 395 Сохранение состояния сеанса
- 396 Восстановление состояния сеанса с помощью cookie
- 398 Использование надстройки MVC над ASP.NET
- 404 Глава 20. Silverlight
- 404 Создание проекта Silverlight
- 405 Воспроизведение видео
- 409 Создание индикатора загрузки и воспроизведения
- 411 Реакция пользовательского интерфейса на события таймера
- 413 Создание трехмерной перспективы для содержимого страницы
- 414 Выполнение приложения за пределами браузера
- 415 Захват изображения с веб-камеры
- 417 Распечатка документа
- 419 ЧАСТЬ IV. Более сложные элементы языка С#
- 421 Глава 21. LINQ
- 421 Запрос к коллекции объектов
- 423 Упорядочивание результатов
- 423 Фильтрование коллекции
- 424 Получение коллекции на основе отдельных полей объектов (проекция)
- 424 Выполнение объединения
- 425 Запрос к XML-документу
- 426 Создание XML-документа
- 426 Запрос к Entity Framework
- 428 Запрос к веб-службе (LINQ to Bing)
- 430 Ускорение запросов с помощью PLINQ (Parallel LINQ)
- 432 Глава 22. Управление памятью
- 432 Измерение объема памяти, нужного приложению
- 433 Освобождение неуправляемых ресурсов с помощью финализации
- 435 Освобождение управляемых ресурсов с помощью шаблона Dispose
- 440 Принудительная сборка мусора
- 440 Создание кэша, позволяющего выполнять сборку мусора
- 443 Работа с указателями
- 444 Ускорение доступа к массивам
- 445 Предотвращение перемещения объектов в памяти
- 446 Выделение неуправляемой памяти
- 448 Глава 23. Потоки выполнения. Асинхронное и параллельное программирование
- 448 Распределение работы между несколькими процессорами
- 452 Использование структур данных в разных потоках выполнения
- 452 Асинхронный вызов метода
- 454 Работа с пулом потоков выполнения
- 454 Создание потока выполнения
- 455 Обмен данными с потоком выполнения
- 456 Защита данных, используемых в нескольких потоках выполнения
- 459 Применение методов класса Interlocked вместо блокировок
- 460 Защита данных в нескольких процессах
- 461 Ограничение количества экземпляров приложения до одного
- 462 Ограничение количества потоков выполнения, обращающихся к ресурсу
- 464 Отправка сигналов потокам выполнения с помощью механизма событий
- 468 Использование многопотокового таймера
- 468 Использование блокировки чтения/записи
- 470 Применение асинхронной модели программирования
- 474 Глава 24. Применение отражения и создание добавляемых модулей
- 474 Перечисление типов в сборке
- 475 Добавление нестандартного атрибута
- 477 Динамическое создание экземпляра класса
- 477 Вызов метода динамически созданного экземпляра класса
- 478 Реализация архитектуры с добавляемыми модулями
- 483 Глава 25. Шаблоны приложений и полезные советы по проектированию
- 483 Применение секундомера для профилирования кода
- 484 Пометка устаревшего кода
- 485 Объединение нескольких событий в одно
- 489 Реализация шаблона с наблюдателем (подписчиком)
- 492 Использование брокера событий
- 495 Запоминание местоположения на экране
- 497 Реализация отмены с помощью командных объектов
- 504 Применение модели Model-View-ViewModel в технологии WPF
- 514 Локализация
- 515 Локализация приложения Windows Forms
- 516 Локализация приложения ASP.NET
- 518 Локализация WPF-приложения
- 522 Локализация Silverlight-приложения
- 524 Развертывание приложений с использованием ClickOnce
- 527 Глава 26. Взаимодействие с операционной системой и аппаратной частью
- 527 Получение информации об операционной системе, пакете обновления и версии CLR
- 528 Получение информации о ЦПУ и других аппаратных средствах
- 530 Вызов UAC для запрашивания прав администратора
- 533 Запись в журнал событий
- 534 Обращение к Реестру
- 536 Управление службами Windows
- 536 Создание службы Windows
- 539 Вызов низкоуровневых функций Windows с помощью P/Invoke
- 540 Вызов библиотечных функций, написанных на языке C, из кода на языке С#
- 541 Работа с файлами, отображенными в память
- 542 Обеспечение работы приложения в 32-битовом и 64-битовом окружении
- 544 Реагирование на изменение системной конфигурации
- 544 Использование некоторых возможностей Windows 7
- 546 Получение информации о режиме питания
- 547 Глава 27. Полезные мелочи
- 547 Создание непрямоугольного окна
- 551 Создание информационной пиктограммы
- 555 Создание хранителя экрана в WPF
- 563 Вывод заставки
- 568 Воспроизведение звукового файла
- 569 Перетасовка карт
- 571 Приложение. Необходимые инструменты
- 571 Утилита Reflector
- 572 Среда NUnit
- 575 Программа NDepend
- 576 Программа FXCop
- 577 Виртуальная машина
- 578 Утилиты Process Explorer и Process Monitor
- 579 Программа RegexBuddy
- 580 Приложение LINQPad
- 581 Поиск инструментальных средств
- 583 Предметный указатель
Инструкция как скачать книгу Бен Ватсон: С# 4.0 на примерах в форматах DjVu, PDF, DOC или fb2 совершенно бесплатно.