Бен Ватсон
С# 4.0 на примерах (2011)
ОГЛАВЛЕНИЕ
Об авторе ..2
Благодарности ..3
Введение ..5
Краткий обзор книгиЧАСТЬ I. ОСНОВЫ ПРОГРАММИРОВАНИЯ НА ЯЗЫКЕ С# ..9
Как извлечь максимум пользы из этой книги
Как углубить и расширить свои знания
Глава 1. Основы работы с типами ..11
Создание классаГлава 2. Создание типов с разносторонней функциональностью ..27
Определение полей, свойств и методов
Определение статических членов
Написание конструктора
Инициализация свойств при конструировании
Применение модификаторов const и readonly
Повторное использование кода в нескольких конструкторах
Создание производного класса
Вызов конструктора базового класса
Переопределение метода или свойства базового класса
Создание интерфейса
Реализация интерфейсов
Создание структуры
Создание анонимного типа
Предотвращение создания экземпляра с помощью абстрактного класса
Интерфейс или абстрактный базовый класс?
Форматирование типа методом ToString()Глава 3. Общие принципы кодирования ..42
Создание типов, допускающих выяснение равенства
Создание типов, хешируемых методом GetHashCode()
Создание сортируемых типов
Создание индекса у типов
Уведомление клиентов об изменении состояния объекта
Перегрузка операций
Преобразование одного типа в другой
Предотвращение наследования
Разрешение типу значения принимать значение null
Объявление переменныхГлава 4. Исключения ..57
Откладывание проверки типов до этапа выполнения (динамические типы)
Применение динамической типизации для упрощения взаимодействия с COM
Объявление массивов
Создание многомерных массивов
Создание псевдонима для пространства имен
Применение условной операции (?:)
Применение операции проверки на null (??)
Добавление методов в существующие типы с использованием методов расширения
Вызов методов с параметрами по умолчанию
Вызов методов с именованными параметрами
Откладывание вычисления значения до момента обращения к нему
Создание контрактов кода
Возбуждение исключенияГлава 5. Числа ..70
Обработка исключения
Обработка нескольких исключений
Повторное возбуждение исключения
Практически гарантированное выполнение кода с использованием блока finally
Получение информации от исключения
Создание собственного исключения
Перехват необработанных исключений
Советы по работе с исключениями
Выбор между типами float, double и decimalГлава 6. Перечисления ..90
Работа с очень большими числами (тип BigInteger)
Работа с комплексными числами
Форматирование числа в строку
Преобразование строки в число
Преобразование числа из одной системы счисления в другую
Преобразование числа в байты (и обратно)
Выяснение четности числа
Выяснение, является ли число степенью двойки
Выяснение, является ли число простым
Подсчет количества установленных битов
Пересчет градусов в радианы
Округление
Генерирование "хороших" случайных чисел
Генерирование уникальных идентификационных номеров (GUID)
Объявление перечисленияГлава 7. Строки ..97
Объявление флагов в виде перечисления
Выяснение, установлен ли флаг
Преобразование перечисления в целое (и обратно)
Проверка допустимости значений перечисления
Получение списка значений перечисления
Преобразование строки в перечисление
Добавление метаданных к перечислению с помощью методов расширения
Советы по использованию перечислений
Преобразование строки в байтовое представление (и обратно)Глава 8. Регулярные выражения ..116
Создание собственной схемы кодирования
Корректное сравнение строк
Корректная смена регистра
Распознавание пустых строк
Конкатенация строк: обязательно ли использовать класс StringBuilder
Конкатенация элементов коллекции в одну строку
Добавление символа новой строчки
Разбивка строки
Преобразование двоичных данных в строку (кодировка base-64)
Изменение порядка слов на обратный
Естественная сортировка строк
Поиск в текстеГлава 9. Универсальные типы ..121
Извлечение фрагментов текста
Замена фрагмента текста
Проверка допустимости
Повышение производительности регулярных выражений
Создание универсального спискаЧАСТЬ II. ОБРАБОТКА ДАННЫХ ..133
Создание универсального метода
Создание универсального интерфейса
Создание универсального класса
Создание универсального делегата
Работа с несколькими универсальными типами
Накладывание ограничений на универсальный тип
Преобразование IEnumerable<string> в IEnumerable<object> (ковариантность)
Преобразование IComparer<Child> в IComparer<Parent> (контравариантность)
Создание кортежей (пар, троек и т.д.)
Глава 10. Коллекции ..135
Выбор подходящего класса-коллекцииГлава 11. Файлы и сериализация ..156
Инициализация коллекции
Перебор элементов коллекции без привязки к ее реализации
Создание собственной коллекции
Создание собственных итераторов для коллекции
Изменение порядка элементов массива на обратный
Изменение порядка элементов связного списка на обратный
Извлечение уникальных элементов из коллекции
Подсчет количества вхождений элемента
Реализация очереди с приоритетами
Создание префиксного дерева
Создание, чтение и запись файлаГлава 12. Работа в сетях и во Всемирной паутине ..177
Удаление файла
Комбинирование потоков данных (сжатие файла)
Выяснение размера файла
Получение информации, связанной с безопасностью
Проверка существования файла и каталога
Список дисков
Список каталогов и файлов
Обзор каталогов
Поиск файла или каталога
Манипуляции с путями к файлам
Создание уникальных или временных имен для файлов
Отслеживание изменений в файловой системе
Получение пути к каталогам My Documents, My Pictures и т.д.
Сериализация объектов
Сериализация в буфер в памяти
Хранение данных приложения, имеющего ограниченные права
Определение IP-адреса по имени хостаГлава 13. Базы данных ..210
Выяснение имени хоста и IP-адреса у данного компьютера
"Пингование" компьютера
Выяснение информации о сетевой карте
Создание сервера и клиента на базе TCP/IP
Отправка электронного письма по протоколу SMTP
Загрузка содержимого веб-страницы по протоколу HTTP
Выгрузка файла по протоколу FTP
Удаление тегов из HTML-кода
Встраивание веб-браузера в приложение
Прием RSS-ленты новостей
Динамическое генерирование RSS-ленты новостей в IIS
Взаимодействие между процессами на одном компьютере (WCF)
Взаимодействие между двумя компьютерами в одной сети (WCF)
Взаимодействие через Интернет (WCF)
Обнаружение служб на этапе выполнения (WCF)
Создание базы данных в Visual StudioГлава 14. Язык XML ..234
Соединение с базой и чтение данных
Добавление данных в таблицу
Удаление данных из таблицы
Выполнение хранимой процедуры
Транзакции
Связывание данных с элементом управления при помощи класса DataSet
Выяснение доступности соединения с базой данных
Автоматическое отображение данных на объекты с помощью платформы Entity Framework
Сериализация объекта в XML и десериализация егоЧАСТЬ III. Взаимодействие с пользователем ..249
Создание XML-документа "с нуля"
Чтение XML-файла
Проверка корректности XML-документа
Выдача запроса к XML-документу с помощью XPath
Преобразование информации из базы данных в XML-документ
Преобразование XML-документа в HTML-документ
Глава 15. Делегаты, события и анонимные методы ..251
Динамический вызов методаГлава 16. Технология Windows Forms ..264
Подписка на событие
Публикация события
Гарантия обновления пользовательского интерфейса в потоке пользовательского интерфейса
Присваивание анонимного метода делегату
Использование анонимных методов в качестве простых обработчиков событий
Использование преимуществ контравариантности
Создание модальных и немодальных формГлава 17. Графика с применением Windows Forms и GDI+ ..296
Добавление строки меню
Динамический перевод пунктов меню в неактивное состояние
Добавление строки состояния
Добавление панели инструментов
Создание интерфейса, включающего в себя подокно
Наследование формы
Создание собственного элемента управления
Применение таймера
Использование общих и пользовательских настроек конфигурации
Эффективное использование элемента ListView в виртуальном режиме
Наклон колесика мыши для горизонтальной прокрутки
Реализация Cut и Paste
Автоматический сброс индикатора ожидания
Определение цветаГлава 18. WPF ..328
Использование системного элемента управления для выбора цвета
Преобразование цветов между системами RGB и HSV
Рисование фигур
Создание перьев
Создание кистей с произвольными характеристиками
Преобразования
Рисование текста
Расположение текста по диагонали
Вывод изображений
Вывод прозрачных изображений
Рисование в буфере
Прямое обращение к пикселам для повышения эффективности
Рисование со сглаживанием
Перерисовка без мерцания
Изменение размеров изображения
Создание миниатюры
Захват многоэкранного изображения
Вычисление расстояния от указателя мыши до заданной точки
Выяснение местоположения точки относительно прямоугольника
Выяснение местоположения точки относительно круга
Выяснение местоположения точки относительно эллипса
Выяснение факта пересечения двух прямоугольников
Печать и предварительный просмотр
Открытие окнаГлава 19. ASP.NET ..364
Выбор компоновки интерфейса
Добавление строки меню
Добавление строки состояния
Добавление панели инструментов
Использование стандартных команд
Использование нестандартных команд
Перевод команд из неактивного состояния в активное и обратно
Сворачивание и разворачивание группы элементов управления
Реагирование на события
Отделение внешнего вида от функциональности
Применение триггеров для смены стилей на этапе выполнения
Связывание свойств элемента управления с другим объектом
Форматирование значений при связывании данных
Преобразование типов значений при связывании данных
Связывание с коллекцией
Контроль за представлением связанных данных
Определение внешнего вида элементов управления с помощью шаблонов
Анимирование свойств элементов
Отображение трехмерной графики
Размещение видео на поверхности трехмерной фигуры
Размещение интерактивных элементов управления на поверхности трехмерной фигуры
Применение WPF в приложении WinForms
Применение WinForms в WPF-приложении
Просмотр отладочной и трассировочной информацииГлава 20. Silverlight ..404
Выяснение возможностей браузера
Перенаправление на другую страницу
Аутентификация с помощью формы для входа пользователя в систему
Использование главных страниц для достижения единства оформления
Добавление меню
Связывание данных с элементом управления GridView
Создание пользовательского элемента управления
Создание гибкого пользовательского интерфейса с элементами Web Parts
Создание простой страницы с использованием технологии AJAX
Проверка допустимости данных
Поддержание состояния приложения
Поддержание состояния пользовательского интерфейса
Поддержание пользовательских данных на протяжении сеанса
Сохранение состояния сеанса
Восстановление состояния сеанса с помощью cookie
Использование надстройки MVC над ASP.NET
Создание проекта SilverlightЧАСТЬ IV. Более сложные элементы языка C# ..419
Воспроизведение видео
Создание индикатора загрузки и воспроизведения
Реакция пользовательского интерфейса на события таймера
Создание трехмерной перспективы для содержимого страницы
Выполнение приложения за пределами браузера
Захват изображения с веб-камеры
Распечатка документа
Глава 21. LINQ ..421
Запрос к коллекции объектовГлава 22. Управление памятью ..432
Упорядочивание результатов
Фильтрование коллекции
Получение коллекции на основе отдельных полей объектов (проекция)
Выполнение объединения
Запрос к XML-документу
Создание XML-документа
Запрос к Entity Framework
Запрос к веб-службе (LINQ to Bing)
Ускорение запросов с помощью PLINQ (Parallel LINQ)
Измерение объема памяти, нужного приложениюГлава 23. Потоки выполнения. Асинхронное и параллельное программирование ..448
Освобождение неуправляемых ресурсов с помощью финализации
Освобождение управляемых ресурсов с помощью шаблона Dispose
Принудительная сборка мусора
Создание кэша, позволяющего выполнять сборку мусора
Работа с указателями
Ускорение доступа к массивам
Предотвращение перемещения объектов в памяти
Выделение неуправляемой памяти
Распределение работы между несколькими процессорамиГлава 24. Применение отражения и создание добавляемых модулей ..474
Использование структур данных в разных потоках выполнения
Асинхронный вызов метода
Работа с пулом потоков выполнения
Создание потока выполнения
Обмен данными с потоком выполнения
Защита данных, используемых в нескольких потоках выполнения
Применение методов класса Interlocked вместо блокировок
Защита данных в нескольких процессах
Ограничение количества экземпляров приложения до одного
Ограничение количества потоков выполнения, обращающихся к ресурсу
Отправка сигналов потокам выполнения с помощью механизма событий
Использование многопотокового таймера
Использование блокировки чтения/записи
Применение асинхронной модели программирования
Перечисление типов в сборкеГлава 25. Шаблоны приложений и полезные советы по проектированию ..483
Добавление нестандартного атрибута
Динамическое создание экземпляра класса
Вызов метода динамически созданного экземпляра класса
Реализация архитектуры с добавляемыми модулями
Применение секундомера для профилирования кодаГлава 26. Взаимодействие с операционной системой и аппаратной частью ..527
Пометка устаревшего кода
Объединение нескольких событий в одно
Реализация шаблона с наблюдателем (подписчиком)
Использование брокера событий
Запоминание местоположения на экране
Реализация отмены с помощью командных объектов
Применение модели Model-View-ViewModel в технологии WPF
Локализация
Локализация приложения Windows Forms
Локализация приложения ASP.NET
Локализация WPF-приложения
Локализация Silverlight-приложения
Развертывание приложений с использованием ClickOnce
Получение информации об операционной системе, пакете обновления и версии CLRГлава 27. Полезные мелочи ..547
Получение информации о ЦПУ и других аппаратных средствах
Вызов UАС для запрашивания прав администратора
Запись в журнал событий
Обращение к Реестру
Управление службами Windows
Создание службы Windows
Вызов низкоуровневых функций Windows с помощью P/Invoke
Вызов библиотечных функций, написанных на языке C, из кода на языке C#
Работа с файлами, отображенными в память
Обеспечение работы приложения в 32-битовом и 64-битовом окружении
Реагирование на изменение системной конфигурации
Использование некоторых возможностей Windows 7
Получение информации о режиме питания
Создание непрямоугольного окнаПриложение. Необходимые инструменты ..571
Создание информационной пиктограммы
Создание хранителя экрана в WPF
Вывод заставки
Воспроизведение звукового файла
Перетасовка карт
Утилита ReflectorПредметный указатель
Среда NUnit
Программа NDepend
Программа FXCop
Виртуальная машина
Утилиты Process Explorer и Process Monitor
Программа RegexBuddy
Приложение LINQPad
Поиск инструментальных средств
Перейти на страницу скачивания книги: Ватсон Б. - С# 4.0 на примерах