C# 5.0. Справочник. Полное описание языка

Джозеф Албахари, Бен Албахари

Данное руководство, ставшее бестселлером, позволяет получить точные ответы практически на любые вопросы по C# 5.0 и .NET CLR. Уникально организованное по концепциям и сценариям использования, обновленное 5-е издание книги предлагает реорганизованные разделы, посвященные параллелизму, многопоточности и параллельному программированию, а также включает подробные материалы по новому средству C# 5.0 – асинхронным функциям.

Проверенная более чем 20 экспертами, в числе которых Эрик Липперт, Стивен Тауб, Крис Барроуз и Джон Скит, эта книга содержит все, что необходимо для освоения C# 5.0. Она широко известна как исчерпывающий справочник по языку.

  • Изучите основы языка C#, включая синтаксис, типы и переменные
  • Исследуйте более сложные темы, такие как небезопасный код и вариантность типов
  • Научитесь пользоваться языком LINQ благодаря трем посвященным ему главам
  • Освойте контракты кода, динамическое программирование и параллельное программирование
  • Научитесь работать со средствами .NET, в том числе с рефлексией, сборками, управлением памятью, безопасностью, вводом-выводом, XML, коллекциями, взаимодействием с сетью и собственной поддержкой взаимодействия.

Издательство: Вильямс, 2013 г.

ISBN 978-5-8459-1819-2

Количество страниц: 1054.

Содержание книги «C# 5.0. Справочник. Полное описание языка»:

  • 27 Об авторах
  • 28 Благодарности
  • 29 Предисловие
    • 29 Предполагаемая читательская аудитория
    • 30 Как организована эта книга
    • 30 Что требуется для работы с этой книгой
    • 30 Соглашения, используемые в этой книге
    • 31 Использование примеров кода
    • 32 От издательства
  • 33 Глава 1. Введение в С# и .NET Framework
    • 33 Объектная ориентация
    • 34 Безопасность в отношении типов
    • 34 Управление памятью
    • 35 Поддержка платформ
    • 35 Отношения C# и CLR
    • 35 CLR и .NET Framework
    • 36 C# и Windows Runtime
    • 38 Что нового в C# 5.0
    • 38 Что нового в C# 4.0
    • 39 Что нового в C# 3.0
  • 41 Глава 2. Основы языка С#
    • 41 Первая программа на C#
      • 43 Компиляция
    • 44 Синтаксис
      • 44 Идентификаторы и ключевые слова
      • 45 Литералы, знаки пунктуации и операции
      • 46 Комментарии
    • 46 Основы типов
      • 46 Примеры предопределенных типов
      • 47 Примеры специальных типов
      • 49 Преобразования
      • 50 Типы значений и ссылочные типы
      • 53 Классификация предопределенных типов
    • 54 Числовые типы
      • 54 Числовые литералы
      • 56 Числовые преобразования
      • 56 Арифметические операции
      • 57 Операции инкремента и декремента
      • 57 Специальные целочисленные операции
      • 58 8- и 16-битные целочисленные типы
      • 59 Специальные значения fl oat и double
      • 60 Сравнение double и decimal
      • 60 Ошибки округления вещественных чисел
    • 61 Булевские типы и операции
      • 61 Булевские преобразования
      • 61 Операции сравнения и проверки равенства
      • 62 Условные операции
    • 63 Строки и символы
      • 63 Символьные преобразования
      • 63 Строковый тип
    • 65 Массивы
      • 65 Стандартная инициализация элементов
      • 66 Многомерные массивы
      • 67 Упрощенные выражения инициализации массивов
      • 68 Проверка границ
    • 68 Переменные и параметры
      • 69 Стек и куча
      • 70 Определенное присваивание
      • 71 Стандартные значения
      • 71 Параметры
      • 76 Объявление неявно типизированных локальных переменных с помощью var
    • 77 Выражения и операции
      • 77 Первичные выражения
      • 77 Пустые выражения
      • 77 Выражения присваивания
      • 78 Приоритеты операций и ассоциативность
      • 79 Таблица операций
    • 81 Операторы
      • 82 Операторы объявления
      • 82 Операторы выражений
      • 83 Операторы выбора
      • 86 Операторы итераций
      • 87 Операторы перехода
      • 89 Разные операторы
    • 89 Пространства имен
      • 90 Директива using
      • 90 Правила внутри пространств имен
      • 92 Назначение псевдонимов типам и пространствам имен
      • 92 Дополнительные возможности пространств имен
  • 95 Глава 3. Создание типов в С#
    • 95 Классы
      • 95 Поля
      • 96 Методы
      • 97 Конструкторы экземпляров
      • 99 Инициализаторы объектов
      • 100 Ссылка this
      • 100 Свойства
      • 102 Индексаторы
      • 103 Константы
      • 105 Статические конструкторы
      • 106 Статические классы
      • 106 Финализаторы
      • 106 Частичные типы и методы
    • 108 Наследование
      • 108 Полиморфизм
      • 109 Приведение и ссылочные преобразования
      • 111 Виртуальные функции-члены
      • 112 Абстрактные классы и абстрактные члены
      • 112 Сокрытие унаследованных членов
      • 113 Запечатывание функций и классов
      • 113 Ключевое слово base
      • 114 Конструкторы и наследование
      • 115 Перегрузка и распознавание
    • 116 Тип object
      • 117 Упаковка и распаковка
      • 118 Статическая проверка типов и проверка типов во время выполнения
      • 118 Метод GetType и операция typeof
      • 119 Метод ToString
      • 119 Список членов object
    • 119 Структуры
      • 120 Семантика конструирования структуры
    • 120 Модификаторы доступа
      • 121 Примеры
      • 121 Дружественные сборки
      • 122 Перекрытие доступности
      • 122 Ограничения, накладываемые на модификаторы доступа
    • 122 Интерфейсы
      • 124 Расширение интерфейса
      • 124 Явная реализация членов интерфейса
      • 124 Реализация виртуальных членов интерфейса
      • 125 Повторная реализация члена интерфейса в подклассе
      • 126 Интерфейсы и упаковка
    • 127 Перечисления
      • 128 Преобразования перечислений
      • 129 Перечисления флагов
      • 129 Операции над перечислениями
      • 130 Проблемы безопасности типов
    • 131 Вложенные типы
    • 132 Обобщения
      • 132 Обобщенные типы
      • 133 Для чего предназначены обобщения
      • 134 Обобщенные методы
      • 135 Объявление параметров типа
      • 135 Операция typeof и несвязанные обобщенные типы
      • 136 Стандартное обобщенное значение
      • 136 Ограничения обобщений
      • 137 Создание подклассов для обобщенных классов
      • 138 Самоссылающиеся объявления обобщений
      • 138 Статические данные
      • 138 Параметры типа и преобразования
      • 139 Ковариантность
      • 142 Контравариантность
      • 143 Сравнение обобщений C# и шаблонов C++
  • 145 Глава 4. Дополнительные средства С#
    • 145 Делегаты
      • 146 Написание подключаемых методов с помощью делегатов
      • 147 Групповые делегаты
      • 148 Цели в виде методов экземпляра и статических методов
      • 149 Обобщенные типы делегатов
      • 149 Делегаты Func и Action
      • 150 Сравнение делегатов и интерфейсов
      • 151 Совместимость делегатов
    • 153 События
      • 155 Стандартный шаблон событий
      • 158 Средства доступа к событию
      • 159 Модификаторы событий
    • 159 Лямбда-выражения
      • 160 Явное указание типов лямбда-параметров
      • 160 Захватывание внешних переменных
    • 163 Анонимные методы
    • 163 Операторы try и исключения
      • 165 Конструкция catch
      • 166 Блок finally
      • 168 Генерация исключений
      • 169 Ключевые свойства System.Exception
      • 169 Общие типы исключений
      • 170 Шаблон методов TryXXX
      • 171 Альтернативы исключениям
    • 171 Перечисление и итераторы
      • 171 Перечисление
      • 172 Инициализаторы коллекций
      • 172 Итераторы
      • 173 Семантика итератора
      • 175 Компоновка последовательностей
    • 175 Типы, допускающие значение null
      • 176 Структура Nullable<T>
      • 177 Подъем операций
      • 179 Тип bool? с операциями & и |
      • 179 Операция объединения с null
      • 179 Сценарии для типов, допускающих null
      • 180 Альтернативы типам, допускающим значение null
    • 181 Перегрузка операций
      • 181 Функции операций
      • 182 Перегрузка операций эквивалентности и сравнения
      • 182 Специальные неявные и явные преобразования
      • 183 Перегрузка true и false
    • 184 Расширяющие методы
      • 185 Цепочки расширяющих методов
      • 185 Неоднозначность и разрешение
    • 186 Анонимные типы
    • 187 Динамическое связывание
      • 188 Сравнение статического и динамического связываний
      • 189 Специальное связывание
      • 189 Языковое связывание
      • 190 Исключение RuntimeBinderException
      • 190 Представление dynamic во время выполнения
      • 191 Динамические преобразования
      • 192 Сравнение var и dynamic
      • 192 Динамические выражения
      • 193 Динамические вызовы без динамических получателей
      • 193 Статические типы в динамических выражениях
      • 194 Невызываемые функции
    • 195 Атрибуты
      • 195 Классы атрибутов
      • 196 Именованные и позиционные параметры атрибутов
      • 196 Цели атрибутов
      • 196 Указание нескольких атрибутов
    • 197 Атрибуты информации о вызывающем компоненте (C# 5)
    • 198 Небезопасный код и указатели
      • 198 Основы указателей
      • 199 Небезопасный код
      • 199 Оператор fixed
      • 200 Операция указателя на член
      • 200 Массивы
      • 201 void*
      • 202 Указатели на неуправляемый код
    • 202 Директивы препроцессора
      • 203 Условные атрибуты
      • 204 Директива #pragma warning
    • 204 XML-документация
      • 205 Стандартные XML-дескрипторы документации
      • 206 Дескрипторы, определяемые пользователем
      • 206 Перекрестные ссылки на типы или члены
  • 209 Глава 5. Обзор .NET Framework
    • 211 Среда CLR и ядро платформы
      • 211 Системные типы
      • 212 Обработка текста
      • 212 Коллекции
      • 212 Запросы
      • 212 XML
      • 213 Диагностика и контракты кода
      • 213 Параллелизм и асинхронность
      • 213 Потоки данных и ввод-вывод
      • 213 Работа с сетями
      • 214 Сериализация
      • 214 Сборки, рефлексия и атрибуты
      • 214 Динамическое программирование
      • 214 Безопасность
      • 215 Расширенная многопоточность
      • 215 Параллельное программирование
      • 215 Домены приложений
      • 215 Собственная возможность взаимодействия и взаимодействие с COM
    • 216 Прикладные технологии
      • 216 Технологии пользовательских интерфейсов
      • 218 Технологии серверной части
      • 220 Технологии распределенных систем
  • 223 Глава 6. Основы .NET Framework
    • 223 Обработка строк и текста
      • 223 Тип char
      • 225 Тип string
      • 229 Сравнение строк
      • 231 Класс StringBuilder
      • 232 Кодировка текста и Unicode
    • 235 Дата и время
      • 236 Структура TimeSpan
      • 237 Структуры DateTime и DateTimeOffset
    • 242 Даты и часовые пояса
      • 242 DateTime и часовые пояса
      • 243 DateTimeOffset и часовые пояса
      • 243 TimeZone и TimeZoneInfo
      • 247 Летнее время и DateTime
    • 248 Форматирование и разбор
      • 249 ToString и Parse
      • 249 Поставщики форматов
    • 253 Стандартные форматные строки и флаги разбора
      • 254 Форматные строки для чисел
      • 256 Перечисление NumberStyles
      • 258 Форматные строки для даты/времени
      • 260 Перечисление DateTimeStyles
      • 260 Форматные строки для перечислений
    • 261 Другие механизмы преобразования
      • 261 Класс Convert
      • 263 Класс XmlConvert
      • 263 Преобразователи типов
      • 264 Класс BitConverter
    • 265 Глобализация
      • 265 Контрольный перечень глобализации
      • 265 Тестирование
    • 266 Работа с числами
      • 266 Преобразования
      • 266 Класс Math
      • 267 Структура BigInteger
      • 268 Структура Complex
      • 269 Класс Random
    • 270 Перечисления
      • 270 Преобразования для перечислений
      • 272 Перечисление значений enum
      • 272 Как работают перечисления
    • 273 Кортежи
      • 274 Сравнение кортежей
    • 274 Структура Guid
    • 275 Сравнение эквивалентности
      • 275 Эквивалентность значений и ссылочная эквивалентность
      • 276 Стандартные протоколы эквивалентности
      • 280 Эквивалентность и специальные типы
    • 284 Сравнение порядка
      • 285 Интерфейсы IComparable
      • 286 < и >
      • 287 Реализация интерфейсов IComparable
    • 288 Служебные классы
      • 288 Класс Console
      • 288 Класс Environment
      • 289 Класс Process
  • 291 Глава 7. Коллекции
    • 291 Перечисление
      • 292 IEnumerable и IEnumerator
      • 293 IEnumerable<T> и IEnumerator<T>
      • 295 Реализация интерфейсов перечисления
    • 298 Интерфейсы ICollection и IList
      • 299 ICollection<T> и ICollection
      • 300 IList<T> и IList
      • 301 IReadOnlyList<T>
    • 302 Класс Array
      • 304 Конструирование и индексация
      • 306 Перечисление
      • 306 Длина и ранг
      • 306 Поиск
      • 308 Сортировка
      • 309 Обращение порядка элементов
      • 309 Копирование
      • 309 Преобразование и изменение размера
    • 310 Списки, очереди, стеки и наборы
      • 310 List<T> и ArrayList
      • 312 LinkedList<T>
      • 314 Queue<T> и Queue
      • 315 Stack<T> и Stack
      • 315 BitArray
      • 316 HashSet<T> и SortedSet<T>
    • 317 Словари
      • 318 IDictionary<TKey,TValue>
      • 320 IDictionary
      • 320 Dictionary<TKey,TValue> и Hashtable
      • 322 OrderedDictionary
      • 322 ListDictionary и HybridDictionary
      • 322 Отсортированные словари
    • 324 Настраиваемые коллекции и прокси
      • 324 Collection<T> и CollectionBase
      • 326 KeyedCollection<TKey,TItem> и DictionaryBase
      • 329 ReadOnlyCollection<T>
    • 329 Подключение протоколов эквивалентности и порядка
      • 330 IEqualityComparer и EqualityComparer
      • 332 IComparer и Comparer
      • 334 StringComparer
      • 335 IStructuralEquatable и IStructuralComparable
  • 337 Глава 8. Запросы LINQ
    • 337 Начало работы
    • 339 Текучий синтаксис
      • 339 Выстраивание в цепочки операций запросов
      • 342 Составление лямбда-выражений
      • 344 Естественный порядок
      • 344 Другие операции
    • 345 Выражения запросов
      • 347 Переменные диапазона
      • 348 Сравнение синтаксиса запросов и синтаксиса SQL
      • 348 Сравнение синтаксиса запросов и текучего синтаксиса
      • 348 Запросы со смешанным синтаксисом
    • 349 Отложенное выполнение
      • 350 Повторная оценка
      • 350 Захваченные переменные
      • 351 Как работает отложенное выполнение
      • 353 Построение цепочки декораторов
      • 354 Каким образам выполняются запросы
    • 355 Подзапросы
      • 357 Подзапросы и отложенное выполнение
    • 358 Стратегии композиции
      • 358 Последовательное построение запросов
      • 359 Ключевое слово into
      • 360 Упаковка запросов
    • 361 Стратегии проекции
      • 361 Инициализаторы объектов
      • 362 Анонимные типы
      • 362 Ключевое слово let
    • 363 Интерпретируемые запросы
      • 365 Каким образом работают интерпретируемые запросы
      • 367 Комбинирование интерпретируемых и локальных запросов
      • 368 AsEnumerable
    • 369 LINQ to SQL и Entity Framework
      • 370 Сущностные классы LINQ to SQL
      • 371 Сущностные классы Entity Framework
      • 372 DataContext и ObjectContext
      • 376 Ассоциации
      • 378 Отложенное выполнение в L2S и EF
      • 379 DataLoadOptions
      • 380 Энергичная загрузка в Entity Framework
      • 380 Обновления
      • 382 Отличия между API-интерфейсами L2S и EF
    • 383 Построение выражений запросов
      • 383 Сравнение делегатов и деревьев выражений
      • 385 AsQueryable
      • 385 Деревья выражений
  • 389 Глава 9. Операции LINQ
    • 390 Обзор
      • 390 Последовательность→последовательность
      • 392 Последовательность→элемент или значение
      • 392 Ничего→последовательность
    • 393 Выполнение фильтрации
      • 393 Where
      • 395 Take и Skip
      • 396 TakeWhile и SkipWhile
      • 396 Distinct
    • 397 Выполнение проекции
      • 397 Select
      • 401 SelectMany
    • 408 Выполнение соединения
      • 408 Join и GroupJoin
      • 416 Операция Zip
    • 416 Упорядочение
      • 416 OrderBy, OrderByDescending, ThenBy и ThenByDescending
    • 419 Группирование
      • 419 GroupBy
    • 422 Операции над множествами
      • 422 Concat и Union
      • 422 Intersect и Except
    • 423 Методы преобразования
      • 423 OfType и Cast
      • 425 ToArray, ToList, ToDictionary и ToLookup
      • 425 AsEnumerable и AsQueryable
    • 426 Операции элементов
      • 426 First, Last и Single
      • 427 ElementAt
      • 427 DefaultIfEmpty
    • 427 Методы агрегирования
      • 428 Count и LongCount
      • 428 Min и Max
      • 429 Sum и Average
      • 429 Aggregate
    • 432 Квантификаторы
      • 432 Contains и Any
      • 432 All и SequenceEqual
    • 433 Методы генерации
      • 433 Empty
      • 433 Range и Repeat
  • 435 Глава 10. LINQ to XML
    • 435 Обзор архитектуры
      • 435 Что собой представляет DOM-модель?
      • 436 DOM-модель LINQ to XML
    • 436 Обзор X-DOM
      • 438 Загрузка и разбор
      • 439 Сохранение и сериализация
    • 439 Создание экземпляра X-DOM
      • 440 Функциональное построение
      • 440 Указание содержимого
      • 441 Автоматическое глубокое копирование
    • 441 Навигация и запросы
      • 442 Навигация по дочерним узлам
      • 445 Навигация по родительским узлам
      • 445 Навигация по равноправным узлам
      • 446 Навигация по атрибутам
    • 446 Обновление X-DOM
      • 446 Обновление простых значений
      • 447 Обновление дочерних узлов и атрибутов
      • 447 Обновление через Parent
    • 449 Работа со значениями
      • 449 Установка значений
      • 449 Получение значений
      • 450 Значения и узлы со смешанным содержимым
      • 451 Автоматическая конкатенация XText
    • 451 Документы и объявления
      • 451 XDocument
      • 453 Объявления XML
    • 454 Имена и пространства имен
      • 455 Пространства имен в XML
      • 456 Указание пространств имен в X-DOM
      • 457 Модель X-DOM и стандартные пространства имен
      • 458 Префиксы
    • 460 Аннотации
    • 461 Проецирование модели X-DOM
      • 462 Устранение пустых элементов
      • 463 Потоковая передача проекции
      • 464 Трансформирование X-DOM
  • 467 Глава 11. Другие технологии XML
    • 468 XmlReader
      • 469 Чтение узлов
      • 471 Чтение элементов
      • 474 Чтение атрибутов
      • 475 Пространства имен и префиксы
    • 476 XmlWriter
      • 477 Запись атрибутов
      • 477 Запись других типов узлов
      • 477 Пространства имен и префиксы
    • 478 Шаблоны для использования XmlReader/XmlWriter
      • 478 Работа с иерархическими данными
      • 480 Смешивание XmlReader/XmlWriter с X-DOM
    • 482 XmlDocument
      • 482 Загрузка и сохранение XmlDocument
      • 483 Обход XmlDocument
      • 483 InnerText и InnerXml
      • 484 Создание и манипулирование узлами
      • 484 Пространства имен
    • 485 XPath
      • 486 Общие операции XPath
      • 487 XPathNavigator
      • 488 Выполнение запросов с пространствами имен
      • 489 XPathDocument
    • 489 XSD и проверка достоверности схемы
      • 490 Выполнение проверки достоверности схемы
    • 492 XSLT
  • 493 Глава 12. Освобождение и сборка мусора
    • 493 IDisposable, Dispose и Close
      • 494 Стандартная семантика освобождения
      • 495 Когда выполнять освобождение
      • 496 Подключаемое освобождение
      • 498 Очистка полей при освобождении
    • 498 Автоматическая сборка мусора
      • 500 Корневые объекты
      • 500 Сборка мусора и WinRT
    • 501 Финализаторы
      • 502 Вызов метода Dispose из финализатора
      • 503 Восстановление
    • 505 Как работает сборщик мусора?
      • 506 Технологии оптимизации
      • 508 Принудительный запуск сборки мусора
      • 509 Нагрузка на память
    • 509 Утечки управляемой памяти
      • 511 Таймеры
      • 512 Диагностика утечек памяти
    • 512 Слабые ссылки
      • 513 Слабые ссылки и кеширование
      • 514 Слабые ссылки и события
  • 517 Глава 13. Диагностика и контракты кода
    • 517 Условная компиляция
      • 518 Сравнение условной компиляции и статических переменных-флагов
      • 519 Атрибут Conditional
    • 520 Классы Debug и Trace
      • 521 Fail и Assert
      • 522 TraceListener
      • 523 Сброс и закрытие прослушивателей
    • 524 Обзор контрактов кода
      • 524 Зачем использовать контракты кода?
      • 526 Принципы, лежащие в основе контрактов
    • 528 Предусловия
      • 528 Contract.Requires
      • 530 Contract.Requires<TException>
      • 531 Contract.EndContractBlock
      • 532 Предусловия и переопределенные методы
    • 532 Постусловия
      • 532 Contract.Ensures
      • 533 Contract.EnsuresOnThrow<TException>
      • 533 Contract.Result<T> и Contract.ValueAtReturn<T>
      • 533 Contract.OldValue<T>
      • 534 Постусловия и переопределенные методы
    • 534 Утверждения и инварианты объектов
      • 534 Утверждения
      • 535 Инварианты объектов
    • 536 Контракты на интерфейсах и абстрактных методах
    • 537 Обработка нарушения контракта
      • 538 Событие ContractFailed
      • 538 Исключения внутри условий контракта
    • 539 Избирательное применение контрактов
      • 539 Контракты в окончательных сборках
      • 540 Проверка на стороне вызывающего компонента
    • 540 Статическая проверка контрактов
      • 541 Атрибут ContractVerification
      • 541 Базовые уровни
      • 542 Атрибут SuppressMessage
    • 542 Интеграция с отладчиком
      • 542 Присоединение и останов
      • 543 Атрибуты отладчика
    • 543 Процессы и потоки процессов
      • 543 Исследование выполняющихся процессов
      • 544 Исследование потоков в процессе
    • 544 StackTrace и StackFrame
    • 546 Журналы событий Windows
      • 546 Запись в журнал событий
      • 547 Чтение журнала событий
      • 547 Мониторинг журнала событий
    • 548 Счетчики производительности
      • 548 Перечисление доступных счетчиков производительности
      • 550 Чтение данных счетчика производительности
      • 551 Создание счетчиков и запись данных о производительности
    • 552 Класс Stopwatch
  • 553 Глава 14. Параллелизм и асинхронность
    • 553 Введение
    • 554 Многопоточная обработка
      • 554 Создание потока
      • 556 Join и Sleep
      • 556 Блокировка
      • 558 Локальное или разделяемое состояние
      • 560 Блокировка и безопасность потоков
      • 561 Передача данных потоку
      • 562 Обработка исключений
      • 564 Потоки переднего плана или фоновые потоки
      • 565 Приоритет потока
      • 565 Передача сигналов
      • 566 Многопоточность в обогащенных клиентских приложениях
      • 567 Контексты синхронизации
      • 568 Пул потоков
    • 570 Задачи
      • 571 Запуск задачи
      • 572 Возврат значений
      • 573 Исключения
      • 574 Продолжение
      • 576 TaskCompletionSource
      • 578 Task.Delay
    • 578 Принципы асинхронности
      • 578 Сравнение синхронных и асинхронных операций
      • 579 Что собой представляет асинхронное программирование?
      • 580 Асинхронное программирование и продолжение
      • 581 Важность языковой поддержки
    • 583 Асинхронные функции в C# 5.0
      • 583 Ожидание
      • 589 Написание асинхронных функций
      • 593 Асинхронные лямбда-выражения
      • 594 Асинхронные методы в WinRT
      • 594 Асинхронность и контексты синхронизации
      • 596 Оптимизация
    • 598 Асинхронные шаблоны
      • 598 Отмена
      • 600 Сообщение о ходе работ
      • 602 Асинхронный шаблон, основанный на задачах
      • 602 Комбинаторы задач
    • 606 Устаревшие шаблоны
      • 606 Модель асинхронного программирования
      • 607 Асинхронный шаблон на основе событий
      • 608 BackgroundWorker
  • 609 Глава 15. Потоки данных и ввод-вывод
    • 609 Потоковая архитектура
    • 611 Использование потоков
      • 612 Чтение и запись
      • 613 Поиск
      • 614 Закрытие и сброс
      • 614 Тайм-ауты
      • 614 Безопасность в отношении потоков управления
      • 615 Потоки с опорными хранилищами
      • 615 FileStream
      • 618 MemoryStream
      • 619 PipeStream
      • 623 BufferedStream
    • 624 Адаптеры потоков
      • 624 Текстовые адаптеры
      • 629 Двоичные адаптеры
      • 630 Закрытие и освобождение адаптеров потоков
    • 631 Потоки со сжатием
      • 632 Сжатие в памяти
    • 633 Работа с zip-файлами
    • 634 Операции с файлами и каталогами
      • 634 Класс File
      • 637 Класс Directory
      • 638 FileInfo и DirectoryInfo
      • 638 Path
      • 640 Специальные папки
      • 642 Запрашивание информации о томе
      • 642 Перехват событий файловой системы
    • 643 Файловый ввод-вывод в Windows Runtime
      • 644 Работа с каталогами
      • 645 Работа с файлами
      • 645 Изолированное хранилище в приложениях Metro
    • 646 Размещенные в памяти файлы
      • 646 Размещенные в памяти файлы и произвольный ввод-вывод файлов
      • 647 Размещенные в памяти файлы и разделяемая память
      • 647 Работа с аксессорами представлений
    • 648 Изолированное хранилище
      • 649 Типы изоляции
      • 651 Чтение и запись в изолированное хранилище
      • 652 Местоположение хранилища
      • 653 Перечисление изолированного хранилища
  • 655 Глава 16. Взаимодействие с сетью
    • 655 Сетевая архитектура
    • 658 Адреса и порты
    • 659 Идентификаторы URI
    • 661 Классы клиентской стороны
      • 661 WebClient
      • 663 WebRequest и WebResponse
      • 664 HttpClient
      • 668 Прокси-серверы
      • 670 Аутентификация
      • 672 Обработка исключений
    • 673 Работа с HTTP
      • 673 Заголовки
      • 674 Строки запросов
      • 675 Выгрузка данных формы
      • 676 Cookie-наборы
      • 677 Аутентификация на основе форм
      • 678 SSL
    • 679 Реализация HTTP-сервера
    • 681 Использование FTP
    • 683 Использование DNS
    • 684 Отправка сообщений электронной почты с помощью SmtpClient
    • 685 Использование TCP
      • 687 Параллелизм и TCP
    • 688 Получение почты POP3 с помощью TCP
    • 690 TCP в Windows Runtime
  • 693 Глава 17. Сериализация
    • 693 Концепции сериализации
      • 693 Механизмы сериализации
      • 696 Форматеры
      • 696 Сравнение явной и неявной сериализации
    • 697 Сериализатор контрактов данных
      • 697 Сравнение DataContractSerializer и NetDataContractSerializer
      • 698 Использование сериализаторов
      • 700 Сериализация подклассов
      • 702 Объектные ссылки
      • 704 Переносимость версий
      • 704 Упорядочение членов
      • 705 Пустые значения и null
    • 706 Контракты данных и коллекции
      • 707 Элементы коллекции, являющиеся подклассами
      • 707 Настройка имен коллекции и элементов
    • 708 Расширение контрактов данных
      • 708 Ловушки сериализации и десериализации
      • 710 Возможность взаимодействия с помощью [Serializable]
      • 711 Возможность взаимодействия с помощью IXmlSerializable
    • 712 Двоичный сериализатор
      • 712 Начало работы
    • 713 Атрибуты двоичной сериализации
      • 713 [NonSerialized]
      • 714 [OnDeserializing] и [OnDeserialized]
      • 715 [OnSerializing] и [OnSerialized]
      • 715 [OptionalField] и поддержка версий
    • 716 Двоичная сериализация с помощью ISerializable
      • 718 Создание подклассов из сериализируемых классов
    • 720 Сериализация XML
      • 720 Начало работы с сериализацией на основе атрибутов
      • 722 Подклассы и дочерние объекты
      • 724 Сериализация коллекций
      • 727 IXmlSerializable
  • 729 Глава 18. Сборки
    • 729 Содержимое сборки
      • 730 Манифест сборки
      • 731 Манифест приложения
      • 732 Модули
      • 733 Класс Assembly
    • 734 Строгие имена и подписание сборок
      • 734 Назначение сборке строгого имени
      • 735 Отложенное подписание
    • 736 Имена сборок
      • 737 Полностью заданные имена
      • 737 Класс AssemblyName
      • 738 Информационная и файловая версии сборки
    • 738 Подпись Authenticode
      • 740 Подписание с помощью системы Authenticode
      • 741 Проверка достоверности подписей Authenticode
    • 742 Глобальный кеш сборок
      • 743 Установка сборок в GAC
      • 744 GAC и поддержка версий
    • 744 Ресурсы и подчиненные сборки
      • 746 Непосредственное встраивание ресурсов
      • 747 Файлы .resources
      • 747 Файлы .resx
      • 750 Подчиненные сборки
      • 752 Культуры и подкультуры
    • 752 Разрешение и загрузка сборок
      • 753 Правила разрешения сборок и типов
      • 754 Событие AssemblyResolve
      • 754 Загрузка сборок
    • 757 Развертывание сборок за пределами базовой папки
    • 759 Упаковка однофайловой исполняемой сборки
      • 760 Избирательное исправление
    • 760 Работа со сборками, не имеющими ссылок на этапе компиляции
  • 763 Глава 19. Рефлексия и метаданные
    • 764 Рефлексия и активизация типов
      • 764 Получение экземпляра Type
      • 766 Имена типов
      • 767 Базовые типы и интерфейсы
      • 768 Создание экземпляров типов
      • 769 Обобщенные типы
    • 770 Рефлексия и вызов членов
      • 772 Типы членов
      • 774 Сравнение членов C# и членов CLR
      • 775 Члены обобщенных типов
      • 775 Динамический вызов члена
      • 776 Параметры методов
      • 778 Использование делегатов для повышения производительности
      • 778 Доступ к неоткрытым членам
      • 779 Обобщенные методы
      • 780 Анонимный вызов членов обобщенного интерфейса
    • 782 Рефлексия сборок
      • 782 Загрузка сборки в контекст, предназначенный только для рефлексии
      • 783 Модули
    • 783 Работа с атрибутами
      • 783 Основы атрибутов
      • 785 Атрибут AttributeUsage
      • 785 Определение собственного атрибута
      • 786 Извлечение атрибутов во время выполнения
      • 788 Извлечение атрибутов в контексте, предназначенном только для рефлексии
    • 788 Динамическая генерация кода
      • 789 Генерация IL с помощью DynamicMethod
      • 790 Стек оценки
      • 791 Передача аргументов динамическому методу
      • 792 Генерация локальных переменных
      • 793 Ветвление
      • 793 Создание объектов и вызов методов экземпляра
      • 795 Обработка исключений
    • 795 Выпуск сборок и типов
      • 797 Сохранение сгенерированных сборок
      • 797 Объектная модель Refl ection.Emit
    • 798 Выпуск членов типа
      • 799 Выпуск методов
      • 800 Выпуск полей и свойств
      • 802 Выпуск конструкторов
      • 803 Присоединение атрибутов
    • 804 Выпуск обобщенных методов и типов
      • 804 Определение обобщенных методов
      • 805 Определение обобщенных типов
    • 805 Сложности, связанные с генерацией
      • 805 Несозданные закрытые обобщения
      • 807 Циклические зависимости
    • 809 Синтаксический разбор IL
      • 809 Написание дизассемблера
  • 815 Глава 20. Динамическое программирование
    • 815 Исполняющая среда динамического языка
    • 817 Унификация числовых типов
    • 818 Динамическое разрешение перегруженных членов
      • 818 Упрощение шаблона Посетитель
      • 821 Анонимный вызов членов обобщенного типа
    • 823 Реализация динамических объектов
      • 824 DynamicObject
      • 826 ExpandoObject
    • 827 Взаимодействие с динамическими языками
      • 828 Передача состояния между C# и сценарием
  • 829 Глава 21. Безопасность
    • 829 Разрешения
      • 830 CodeAccessPermission и PrincipalPermission
      • 832 PermissionSet
      • 833 Сравнение декларативной и императивной безопасности
    • 833 Безопасность доступа к коду (CAS)
      • 836 Как применяется CAS
      • 836 Проверка полного доверия
    • 836 Разрешение вызывающих компонентов с частичным доверием
      • 837 Повышение привилегий
      • 837 APTCA и [SecurityTransparent]
    • 839 Модель прозрачности
      • 840 Как работает модель прозрачности
      • 842 Как создавать библиотеки APTCA с применением прозрачности
      • 845 Прозрачность в сценариях с полным доверием
    • 847 Помещение в песочницу другой сборки
      • 848 Утверждение разрешений
    • 850 Подсистема безопасности операционной системы
      • 851 Выполнение под учетной записью стандартного пользователя
      • 852 Повышение полномочий до административных и виртуализация
    • 853 Безопасность на основе удостоверений и ролей
      • 853 Назначение пользователей и ролей
    • 854 Обзор криптографии
    • 855 Защита данных Windows
    • 856 Хеширование
    • 857 Симметричное шифрование
      • 859 Шифрование в памяти
      • 860 Соединение в цепочку потоков шифрования
      • 861 Освобождение объектов шифрования
      • 862 Управление ключами
    • 862 Шифрование с открытым ключом и подписание
      • 863 Класс RSA
      • 864 Цифровые подписи
  • 867 Глава 22. Расширенная многопоточность
    • 868 Обзор синхронизации
    • 868 Монопольное блокирование
      • 869 Оператор lock
      • 869 Monitor.Enter и Monitor.Exit
      • 870 Выбор объекта синхронизации
      • 871 Когда необходима блокировка
      • 872 Блокирование и атомарность
      • 873 Вложенное блокирование
      • 873 Взаимоблокировки
      • 875 Производительность
      • 875 Mutex
    • 876 Блокирование и безопасность к потокам
      • 877 Безопасность к потокам и типы .NET Framework
      • 879 Безопасность к потокам в серверах приложений
      • 880 Неизменяемые объекты
    • 881 Немонопольное блокирование
      • 881 Семафор
      • 883 Блокировки объектов чтения/записи
    • 887 Сигнализирование с помощью дескрипторов ожидания событий
      • 887 AutoResetEvent
      • 890 ManualResetEvent
      • 891 CountdownEvent
      • 892 Создание межпроцессного объекта EventWaitHandle
      • 892 Дескрипторы ожидания и продолжение
      • 893 Преобразование дескрипторов ожидания в задачи
      • 893 WaitAny, WaitAll и SignalAndWait
    • 895 Класс Barrier
    • 896 Ленивая инициализация
      • 897 Lazy<T>
      • 897 LazyInitializer
    • 898 Локальное хранилище потока
      • 899 [ThreadStatic]
      • 899 ThreadLocal<T>
      • 900 GetData и SetData
    • 901 Interrupt и Abort
    • 902 Suspend и Resume
    • 903 Таймеры
      • 903 Многопоточные таймеры
      • 905 Однопоточные таймеры
  • 907 Глава 23. Параллельное программирование
    • 907 Для чего нужна инфраструктура PFX
      • 908 Концепции PFX
      • 908 Компоненты PFX
      • 910 Когда необходимо использовать инфраструктуру PFX
    • 910 PLINQ
      • 912 Продвижение параллельного выполнения
      • 913 PLINQ и упорядочивание
      • 914 Ограничения PLINQ
      • 914 Пример: параллельная программа проверки орфографии
      • 916 Функциональная чистота
      • 917 Установка степени параллелизма
      • 917 Отмена
      • 918 Оптимизация PLINQ
    • 923 Класс Parallel
      • 923 Parallel.Invoke
      • 924 Parallel.For и Parallel.ForEach
    • 929 Параллелизм задач
      • 930 Создание и запуск задач
      • 932 Ожидание на множестве задач
      • 932 Отмена задач
      • 933 Продолжение
      • 937 Планировщики задач
      • 938 TaskFactory
    • 938 Работа с AggregateException
      • 939 Flatten и Handle
    • 941 Параллельные коллекции
      • 942 IProducerConsumerCollection<T>
      • 943 ConcurrentBag<T>
    • 944 BlockingCollection<T>
      • 944 Реализация очереди производителей/потребителей
  • 947 Глава 24. Домены приложений
    • 947 Архитектура доменов приложений
    • 948 Создание и уничтожение доменов приложений
    • 950 Использование нескольких доменов приложений
    • 952 Использование DoCallBack
    • 953 Мониторинг доменов приложений
    • 953 Домены и потоки
    • 955 Разделение данных между доменами
      • 955 Разделение данных через ячейки
      • 955 Использование Remoting внутри процесса
      • 957 Изолирование типов и сборок
  • 961 Глава 25. Собственная способность к взаимодействию и COM
    • 961 Обращение к собственным DLL-библиотекам
    • 962 Маршализация типов
      • 962 Маршализация общих типов
      • 963 Маршализация классов и структур
      • 964 Маршализация параметров in и out
    • 965 Обратные вызовы из неуправляемого кода
    • 965 Эмуляция объединения C
    • 966 Разделяемая память
    • 968 Отображение структуры на неуправляемую память
      • 971 fixed и fixed {...}
    • 972 Взаимодействие с COM
      • 973 Назначение COM
      • 973 Основы системы типов COM
    • 974 Обращение к компоненту COM из C#
      • 975 Необязательные параметры и именованные аргументы
      • 976 Неявные параметры ref
      • 976 Индексаторы
      • 977 Динамическое связывание
    • 978 Внедрение типов взаимодействия
      • 978 Эквивалентность типов
    • 978 Основные сборки взаимодействия
    • 979 Открытие объектов C# для COM
  • 981 Глава 26. Регулярные выражения
    • 981 Основы регулярных выражений
      • 983 Скомпилированные регулярные выражения
      • 983 RegexOptions
      • 984 Отмена символов
      • 985 Наборы символов
    • 986 Квантификаторы
      • 986 Жадные и ленивые квантификаторы
    • 987 Утверждения нулевой ширины
      • 987 Просмотр вперед и просмотр назад
      • 988 Привязки
      • 989 Границы слов
    • 990 Группы
      • 990 Именованные группы
    • 991 Замена и разделение текста
      • 992 Делегат MatchEvaluator
      • 992 Разделение текста
    • 992 Рецептурный справочник по регулярным выражениям
      • 992 Рецепты
    • 995 Справочник по языку регулярных выражений
  • 1000 Предметный указатель

Инструкция как скачать книгу Джозеф Албахари, Бен Албахари: C# 5.0. Справочник. Полное описание языка в форматах DjVu, PDF, DOC или fb2 совершенно бесплатно.
C# 5.0. Справочник. Полное описание языка
Рейтинг книги:
10 голосов
2236

Поиск книг:




При поиске учитываются только слова, длина которых больше 3-х символов.

Статистика: