C# 3.0. Справочник C# 3.0. Справочник Книга представляет собой подробный справочник по программированию на языке C# 3.0, реализованном в Microsoft Visual Studio 2008. Первые главы целиком посвящены языку C#, начиная с основ синтаксиса, типов и переменных и заканчивая более сложными темами, та BHV 978-5-9775-0245-0
611 руб.
Russian
Каталог товаров

C# 3.0. Справочник

Временно отсутствует
?
  • Описание
  • Характеристики
  • Отзывы о товаре
  • Отзывы ReadRate
Книга представляет собой подробный справочник по программированию на языке C# 3.0, реализованном в Microsoft Visual Studio 2008. Первые главы целиком посвящены языку C#, начиная с основ синтаксиса, типов и переменных и заканчивая более сложными темами, та

Оставить заявку на описание
?
Содержание
Об авторах 1
Предисловие 3
Целевая аудитория 3
Как организована эта книга 4
Что необходимо для чтения этой книги 4
Соглашения, использованные в книге 5
Использование фрагментов кода 5
Благодарности 6
Глава 1. Введение в C# и .NET Framework 9
Объектная ориентированность 9
Безопасность типов 10
Управление памятью 10
Работа на разных платформах 11
Язык C# и среда CLR 11
Среда CLR и платформа .NET Framework 11
Что нового в C# 3.0 13
Глава 2. Основы языка C# 17
Первая программа на C# 17
Компиляция 19
Синтаксис 20
Идентификаторы и ключевые слова 20
Как избежать конфликтов 21
Контекстные ключевые слова 21
Литералы, пунктуаторы и знаки операций 21
Комментарии 22
Основные сведения о типах 22
Примеры стандартных типов 23
Примеры пользовательских типов 23
Члены типа 24
Сходство стандартных и пользовательских типов 24
Конструкторы и создание экземпляров 24
Члены экземпляра и статические члены 25
Ключевое слово public 26
Преобразование типов 26
Типы значений и ссылочные типы 26
Типы значений 27
Ссылочные типы 27
Значение null 28
Расход памяти 29
Таксономия стандартных типов 29
Числовые типы 30
Числовые литералы 31
Распознавание типов числовых литералов 31
Числовые суффиксы 31
Числовые преобразования 32
Преобразование целого в целое 32
Преобразование числа с плавающей точкой в число с плавающей точкой 32
Преобразование целого в число с плавающей точкой и обратно 33
Десятичные преобразования 33
Арифметические операции 33
Операции инкремента и декремента 33
Специальные операции над целыми числами 34
Целочисленное деление 34
Целочисленное переполнение 34
Проверка на переполнение при целочисленных арифметических операциях 34
Проверка на переполнение выражений с константами 35
Побитовые операции 35
Восьми- и шестнадцатибитовые целые 36
Специальные значения типов float и double 36
Типы double и decimal 37
Ошибки округления вещественных чисел 37
Тип bool и булевы операторы 38
Преобразование типа bool 38
Равенство и операции сравнения 38
Условные операции 39
Строки и символы 40
Преобразование типа char 41
Тип string 41
Конкатенация строк 42
Сравнение строк 42
Массивы 42
Инициализация элементов по умолчанию 43
Типы значений и ссылочные типы 43
Многомерные массивы 44
Прямоугольные массивы 44
Ступенчатые массивы 44
Упрощенные выражения для инициализации массива 45
Проверка границ массива 46
Переменные и параметры 46
Стек и куча 46
Стек 46
Куча 47
Определенное присваивание 48
Значения по умолчанию 48
Параметры 49
Передача аргументов по значению 49
Модификатор ref 50
Модификатор out 51
Особенности передачи аргументов по ссылке 52
Модификатор params 52
Ключевое слово var : неявная типизация локальных переменных (C# 3.0) 53
Выражения и операции 54
Первичные выражения 54
Выражения, не имеющие значения 54
Выражения присваивания 54
Приоритет и ассоциативность операций 55
Приоритет 55
Операции с левой ассоциативностью 55
Операции с правой ассоциативностью 55
Таблица операций 56
Операторы 58
Операторы объявления 58
Локальные переменные 58
Операторы выражений 59
Операторы выбора 60
Оператор if 60
Конструкция else 60
Изменение хода выполнения программы с помощью операторных скобок 60
Оператор switch 61
Операторы цикла 63
Циклы while и do-while 63
Цикл for 63
Цикл foreach 64
Операторы перехода 64
Оператор break 64
Оператор continue 65
Оператор goto 65
Оператор return 66
Оператор throw 66
Прочие операторы 66
Пространства имен 66
Ключевое слово namespace 67
Полностью квалифицированные имена 67
Директива using 67
Глобальное пространство имен 68
Правила для пространств имен 68
Область видимости имен 68
Сокрытие имен 69
Повторяющиеся пространства имен 70
Вложенные директивы using 70
Псевдонимы типов и пространств имен 71
Дополнительные возможности пространств имен 71
Внешние пространства имен 71
Квалификаторы псевдонимов для пространств имен 72
Глава 3. Создание типов в C# 75
Классы 75
Поля 75
Модификатор readonly 76
Инициализация поля 76
Совместное объявление нескольких полей 76
Методы 76
Перегрузка методов 77
Передача параметров по значению и ссылке 77
Конструкторы экземпляров 77
Перегрузка конструкторов 78
Неявные конструкторы без параметров 78
Порядок выполнения конструктора и инициализации полей 78
Закрытые конструкторы 79
Инициализаторы объектов (C# 3.0) 79
Ссылка this 80
Свойства 80
Свойства, доступные только для чтения, и вычисляемые свойства 81
Автоматические свойства (C# 3.0) 82
Обращение к свойству методами get и set 82
Реализация свойств в CLR 83
Индексаторы 83
Реализация индексатора 83
Реализация индексатора в CLR 85
Константы 85
Статические конструкторы 86
Порядок инициализации статических полей 87
Недетерминизм статических конструкторов 87
Статические классы 87
Финализаторы 87
Частичные классы и методы 88
Частичные методы (C# 3.0) 88
Наследование 89
Полиморфизм 90
Приведение типов 91
Приведение "вверх" 91
Приведение "вниз" 91
Операция as 92
Операция is 92
Виртуальные функции 92
Абстрактные классы и абстрактные члены 93
Сокрытие унаследованных членов 94
Модификаторы new и virtual 94
Запечатывание функций и классов 95
Ключевое слово base 95
Конструкторы и наследование 96
Неявный вызов конструктора базового класса без параметров 96
Порядок инициализации конструкторов и полей 97
Перегрузка и разрешение конфликтов 97
Тип object 98
Упаковка и распаковка 98
Семантика копирования при упаковке и распаковке 99
Статическая и динамическая проверка типа 99
Метод GetType и операция typeof 100
Метод ToString 100
Список членов объекта 101
Структуры 101
Конструирование структуры 102
Модификаторы доступа 102
Примеры 103
Понижение уровня доступности 103
Ограничения, накладываемые на модификаторы доступа 104
Интерфейсы 104
Расширение интерфейса 105
Явная реализация интерфейса 105
Виртуальная реализация членов интерфейса 106
Новая реализация интерфейса в подклассе 107
Альтернативы реализации интерфейса 108
Интерфейсы и упаковка 108
Выбор между классом и интерфейсом 109
Перечисления 110
Преобразования перечислений 110
Перечисление флагов 111
Операции над перечислениями 112
Безопасность типов 112
Вложенные типы 113
Обобщенные типы 114
Объявление обобщенных типов 115
Для чего существуют обобщенные типы 116
Обобщенные методы 117
Объявление обобщенных параметров 118
Операция typeof для обобщенных типов 118
Значение по умолчанию для обобщенного типа 119
Ограничения для обобщенных типов 119
Обобщенные типы и ковариантность 120
Сравнение обобщенных типов и массивов 121
Создание подклассов обобщенных классов 121
Обобщенные объявления, ссылающиеся на себя 122
Статические данные 122
Обобщенные типы C# и шаблоны С++ 122
Глава 4. Более сложные элементы C# 125
Делегаты 125
Написание подключаемых методов 126
Групповые делегаты 126
Пример группового делегата 127
Экземплярные методы-цели 128
Обобщенные типы делегатов 128
Делегаты и интерфейсы 129
Совместимость делегатов 130
Совместимость по типам 130
Совместимость по параметрам 131
Совместимость по типу возвращаемого значения 131
События 132
Стандартная модель событий 133
Методы обращения к событиям 136
Модификаторы событий 138
Лямбда-выражения (C# 3.0) 138
Явное указание типов параметров лямбда-выражения 139
Обобщенные лямбда-выражения и делегаты Func 140
Внешние переменные 140
Анонимные методы 142
Операторы try и исключения 142
Конструкция catch 144
Блок finally 146
Оператор using 146
Возбуждение исключений 147
Повторное возбуждение исключения 147
Важнейшие свойства класса System.Exception 148
Распространенные типы исключений 149
Распространенные способы программирования 149
Применение метода try 149
Атомарность операций 150
Альтернативы исключениям 151
Перечисление и итераторы 152
Перечисление 152
Итераторы 153
Семантика итераторов 154
Формирование последовательностей 155
Конструирование перечисляемого объекта 155
Типы, допускающие значение null 156
Значение null 156
Структура Nullable<T> 157
Явное и неявное преобразование типов, допускающих значение null 157
Упаковка и распаковка типов, допускающих значение null 157
Поднятие операций 158
Операции равенства 158
Операции отношения 159
Все остальные операции 159
Смешивание разных типов 159
Тип bool? 159
Операция проверки на null 160
Применение типов, допускающих значение null 160
Альтернативы для типов, допускающих значение null 161
Перегрузка операций 162
Обзор 162
Операторные функции 162
Перегрузка операций равенства и сравнения 163
Нестандартные явные и неявные преобразования типов 164
Перегрузка true и false 165
Методы расширения (C# 3.0) 166
Цепочки методов расширения 166
Устранение неоднозначности 166
Пространства имен 166
Методы расширения и методы экземпляров 167
Разные методы расширения 167
Методы расширения и интерфейсы 168
Анонимные типы (C# 3.0) 169
Атрибуты 169
Классы атрибутов 170
Именованные и позиционные параметры 170
Цели атрибутов 171
Указание нескольких атрибутов 171
Небезопасный код и указатели 171
Основы работы с указателями 171
Небезопасный код 172
Оператор fixed 172
Операция "указатель на элемент" 173
Массивы 173
Ключевое слово stackalloc 173
Буферы фиксированного размера 174
Конструкция void* 174
Указатели на неуправляемый код 175
Препроцессорные директивы 175
Условные атрибуты 176
Прагматичный подход к предупреждениям 177
XML-документирование 177
Стандартные XML-теги 179
Теги, определяемые пользователем 181
Перекрестные ссылки 181
Глава 5. Обзор возможностей платформы Framework 183
Что нового в .NET Framework 3.5 184
Среда CLR и "ядро" платформы Framework 185
Системные типы 185
Обработка текста 186
Коллекции 186
Запросы 186
XML 186
Потоки и ввод/вывод 187
Работа в сети 187
Сериализация 187
Сборки, отражение и атрибуты 188
Безопасность 188
Нити выполнения и асинхронные методы 188
Домены приложения 189
Низкоуровневое взаимодействие 189
Диагностика 189
Прикладные технологии 189
Технологии для создания пользовательского интерфейса 189
ASP.NET 190
WPF 190
Windows Forms 191
Технологии работы с базами данных 192
ADO.NET 192
Windows Workflow 193
COM+ и MSMQ 193
Технологии построения распределенных систем 193
WCF 193
Удаленное взаимодействие и веб-службы 194
CardSpace 195
Глава 6. Основы Framework 197
Работа со строками и текстом 197
Тип char 197
Строки 199
Конструирование строк 199
Пустые строки и строки со значением null 199
Обращение к символам в строке 200
Поиск в строке 200
Манипулирование строками 200
Разбиение и объединение строк 201
Метод String.Format и строки составного формата 202
Сравнение строк 203
Выяснение порядка и культурные особенности 203
Сравнение для выяснения равенства 204
Сравнение для выяснения порядка 205
Класс StringBuilder 206
Текстовые кодировки и Unicode 206
Получение объекта Encoding 208
Кодировка для файлового и потокового ввода/вывода 208
Кодировка для байтовых массивов 208
Кодировка UTF-16 и строки 209
Дата и время 210
Структура TimeSpan 210
Структуры DateTime и DateTimeOffset 211
Выбор между DateTime и DateTimeOffset 212
Создание структуры DateTime 213
Создание структуры DateTimeOffset 214
Текущие значения структур DateTime и DateTimeOffset 215
Работа с датой и временем 215
Форматирование и разбор даты и времени 216
Значение null у DateTime и DateTimeOffset 217
Даты и часовые пояса 218
Часовые пояса и структура DateTime 218
Часовые пояса и структура DateTimeOffset 218
Классы TimeZone и TimeZoneInfo 219
Класс TimeZone 219
Класс TimeZoneInfo 220
Структура DateTime и переход на летнее/зимнее время 223
Форматирование и разбор строк 225
Методы ToString и Parse 225
Поставщики форматов 226
Поставщики форматов и класс CultureInfo 227
Поставщики NumberFormatInfo и DateTimeFormatInfo 227
Составное форматирование 228
Разбор строк с помощью поставщиков форматов 228
Интерфейсы IFormatProvider и ICustomFormatter 229
Стандартные строки формата и флаги разбора 230
Строки формата для чисел 231
Флаги NumberStyles 233
Строки формата для DateTime 234
Разбор строк DateTime и возможные ошибки 236
Флаги DateTimeStyles 237
Строки формата для перечисления 237
Другие механизмы преобразования 238
Класс Convert 238
Округление при преобразовании вещественных чисел в целые 238
Системы счисления по основанию 2, 8 и 16 239
Динамические преобразования 239
Преобразования base64 240
Класс XmlConvert 240
Преобразователи типов 240
Класс BitConverter 241
Работа с числами 242
Преобразования 242
Класс Math 242
Класс Random 243
Перечисления 244
Преобразования перечислений 244
Преобразование типа enum в целочисленный тип 245
Преобразование целочисленного типа в enum 246
Преобразование строк 246
Перебор элементов перечисления 246
Как работают перечисления 247
Структура Guid 247
Сравнение для выяснения равенства 248
Равенство по значению и ссылочное равенство 248
Стандартные протоколы равенства 249
Операции == и != 249
Виртуальный метод Object.Equals 249
Статический метод object.Equals 250
Статический метод object.ReferenceEquals 251
Интерфейс IEquatable<T> 252
Когда Equals не равняется операции == 252
Равенство типов, определяемых пользователем 253
Как переопределить семантику равенства 254
Переопределение метода GetHashCode 254
Переопределение метода Equals 255
Перегрузка операций == и != 255
Реализация интерфейса IEquatable<T> 256
Пример: структура Area 256
Подключаемые интерфейсы сравнения 257
Сравнение для выяснения порядка 257
Интерфейсы IComparable 258
Интерфейс IComparable и метод Equals 258
Операции < и > 259
Реализация интерфейсов IComparable 260
Вспомогательные классы 261
Класс Console 261
Класс Environment 262
Класс Process 262
Глава 7. Коллекции 265
Перечисление 265
Интерфейсы IEnumerable и IEnumerator 266
Интерфейсы IEnumerable<T> и IEnumerator<T> 267
Реализация интерфейсов перечисления 268
Интерфейс IDictionaryEnumerator 272
Интерфейсы ICollection и IList 272
Интерфейсы ICollection и ICollection<T> 273
Интерфейсы IList и IList<T> 274
Класс Array 276
Конструирование массива и индексация его элементов 278
Перебор элементов массива 279
Длина и размерность массива 280
Поиск в массиве 280
Сортировка массива 282
Изменение порядка элементов на противоположный 283
Копирование, преобразование типа и изменение размера массива 283
Списки, очереди, стеки и множества 284
Классы List<T> и ArrayList 285
Класс LinkedList<T> 287
Классы Queue и Queue<T> 289
Классы Stack и Stack<T> 290
Класс BitArray 291
Класс HashSet<T> 292
Словари 294
Интерфейсы IDictionary и IDictionary<TKey,TValue> 295
Классы Dictionary<TKey,TValue> и Hashtable 297
Класс OrderedDictionary 298
Классы ListDictionary и HybridDictionary 299
Отсортированные словари 299
Коллекции, настраиваемые пользователем, и прокси-классы 301
Классы Collection<T> и CollectionBase 301
Классы KeyedCollection<TKey,TItem> и DictionaryBase 304
Класс ReadOnlyCollection<T> 306
Подключение протоколов выяснения равенства и порядка 307
Интерфейсы IEqualityComparer и класс EqualityComparer 308
Интерфейсы IComparer и класс Comparer 310
Класс StringComparer 312
Глава 8. Запросы LINQ 315
Основы 315
Лямбда-запросы 317
Цепочки операторов запросов 317
Почему важны методы расширения 320
Составление лямбда-выражений 320
Лямбда-выражения и сигнатуры делегатов Func 321
Лямбда-выражения и типы элементов 321
Естественный порядок элементов 323
Прочие операторы 323
Синтаксис, облегчающий восприятие запроса 324
Переменные итерации 326
Синтаксис, облегчающий восприятие запроса, и SQL-синтаксис 326
Синтаксис, облегчающий восприятие запроса, и лямбда-синтаксис 327
Запросы со смешанным синтаксисом 327
Отложенное выполнение 328
Повторное выполнение 329
Внешние переменные 330
Механика отложенного выполнения 331
Цепочки декораторов 332
Как выполняются запросы 333
Подзапросы 334
Подзапросы и отложенное выполнение 337
Стратегии построения сложных запросов 338
Последовательное построение запросов 338
Ключевое слово into 339
Правила определения областей видимости 340
Создание оболочек для запросов 340
Стратегии проецирования 342
Инициализаторы объектов 342
Анонимные типы 342
Ключевое слово let 343
Интерпретируемые запросы 344
Как работают интерпретируемые запросы 346
Выполнение 347
Комбинирование интерпретируемых и локальных запросов 349
Оператор AsEnumerable 350
Запросы LINQ to SQL 352
Классы сущностей в технологии LINQ to SQL 352
Объект DataContext 353
Автоматическое генерирование сущностей 355
Ассоциирование 355
Отложенное выполнение запросов LINQ to SQL 356
Класс DataLoadOptions 358
Предварительное указание фильтра 358
"Нетерпеливая" загрузка 359
Обновления 359
Построение выражений для запросов 361
Делегаты и деревья выражений 361
Компиляция деревьев выражений 362
Оператор AsQueryable 363
Деревья выражений 363
Объектная модель документов для выражений 363
Глава 9. Операторы LINQ 367
Обзор операторов 368
Коллекция ? коллекция 368
Фильтрация 369
Проецирование 369
Объединение 369
Упорядочивание 369
Группирование 369
Операции над множествами 370
Методы преобразования: импорт 370
Методы преобразования: экспорт 370
Коллекция ? не коллекция 370
Поэлементные операции 370
Методы агрегирования 370
Квантификаторы 370
Не коллекция ? коллекция 371
Методы генерирования коллекций 371
Фильтрация 371
Оператор Where 372
Синтаксис, облегчающий восприятие запроса 372
Реализация метода Enumerable.Where 372
Описание 372
Индексированная фильтрация 373
Оператор Where в запросе LINQ to SQL 373
Операторы Take и Skip 373
Операторы TakeWhile и SkipWhile 374
Оператор Distinct 375
Проецирование 375
Оператор Select 375
Синтаксис, облегчающий восприятие запроса 375
Реализация в классе Enumerable 375
Описание 376
Индексированная проекция 376
Подзапросы Select и иерархия объектов 377
Подзапросы и объединения в запросах LINQ to SQL 377
Проецирование в конкретные типы 379
Оператор SelectMany 380
Синтаксис, облегчающий восприятие запроса 380
Реализация в классе Enumerable 380
Описание 381
Внешние переменные итерации 382
Мышление в соответствии с синтаксисом, облегчающим восприятие запроса 383
Объединение с помощью оператора SelectMany 384
Оператор SelectMany в запросах LINQ to SQL 385
Внешние объединения с помощью оператора SelectMany 386
Объединение 388
Операторы Join и GroupJoin 388
Аргументы оператора Join 388
Аргументы оператора GroupJoin 389
Синтаксис, облегчающий восприятие запроса 389
Описание 389
Оператор Join 390
Объединение по нескольким ключам 392
Объединение в лямбда-синтаксисе 392
Оператор GroupJoin 393
Плоские внешние объединения 394
Объединение и таблицы просмотра 394
Реализации в классе Enumerable 396
Упорядочивание 397
Операторы OrderBy, OrderByDescending, ThenBy и ThenByDescending 397
Аргументы операторов OrderBy и OrderByDescending 397
Аргументы операторов ThenBy и ThenByDescending 397
Синтаксис, облегчающий восприятие запроса 398
Описание 398
Классы, выполняющие сравнение, и сортировка 398
Интерфейсы IOrderedEnumerable и IOrderedQueryable 399
Группирование 400
Оператор GroupBy 400
Синтаксис, облегчающий восприятие запроса 400
Описание 400
Оператор GroupBy в запросах LINQ to SQL 402
Группирование по нескольким ключам 403
Пользовательские классы для выяснения равенства 403
Операции над множествами 403
Операторы Concat и Union 403
Операторы Intersect и Except 404
Методы преобразования 404
Операторы OfType и Cast 405
Операторы ToArray, ToList, ToDictionary и ToLookup 406
Операторы AsEnumerable и AsQueryable 407
Поэлементные операции 407
Операторы First, Last и Single 408
Оператор ElementAt 408
Оператор DefaultIfEmpty 409
Методы агрегирования 409
Операторы Count и LongCount 409
Операторы Min и Max 410
Операторы Sum и Average 411
Оператор Aggregate 412
Квантификаторы 412
Операторы Contains и Any 412
Операторы All и SequenceEqual 413
Методы генерирования коллекций 413
Метод Empty 413
Методы Range и Repeat 414
Глава 10. Запросы LINQ to XML 415
Обзор архитектуры 415
Что такое DOM? 415
DOM в технологии запросов LINQ to XML 416
Обзор модели X-DOM 416
Загрузка и синтаксический анализ 418
Сохранение и сериализация 419
Создание экземпляра дерева X-DOM 420
Функциональное конструирование 420
Указание содержимого 421
Автоматическое глубокое клонирование 422
Навигация и отправка запросов 423
Навигация по узлам-потомкам 423
Методы FirstNode, LastNode и Nodes 424
Чтение элементов 424
Чтение одного элемента 425
Рекурсивные функции 426
Навигация по родительским элементам 426
Навигация по элементам одного уровня 427
Навигация по атрибутам 428
Редактирование дерева X-DOM 428
Обновление простых значений 428
Редактирование узлов-потомков и атрибутов 429
Обновление узла через его родителя 430
Удаление последовательности узлов и атрибутов 430
Работа со значениями 431
Установка значений 432
Чтение значений 432
Значения и узлы со смешанным содержимым 433
Автоматическая конкатенация элементов XText 434
Документы и объявления 434
Класс XDocument 434
XML-объявления 436
Запись объявления в строку 437
Имена и пространства имен 438
Пространства имен в XML 438
Префиксы 439
Атрибуты 440
Указание пространства имен в модели X-DOM 440
X-DOM и пространства имен по умолчанию 441
Префиксы 443
Аннотации 444
Проецирование в модель X-DOM 445
Исключение пустых элементов 447
Проецирование в поток 448
Преобразование дерева X-DOM 449
Более сложные преобразования 450
Глава 11. Другие XML-технологии 453
Класс XmlReader 453
Чтение узлов 455
Чтение элементов 457
Необязательные элементы 458
Произвольный порядок элементов 458
Пустые элементы 459
Другие методы семейства ReadXXX 459
Чтение атрибутов 461
Узлы-атрибуты 461
Пространства имен и префиксы 462
Класс XmlWriter 463
Запись атрибутов 464
Запись узлов других типов 464
Пространства имен и префиксы 465
Примеры использования классов XmlReader и XmlWriter 465
Работа с иерархическими структурами 465
Комбинирование класса XmlReader или XmlWriter с моделью X-DOM 468
Использование XmlReader с типом XElement 468
Использование XmlWriter с типом XElement 469
Класс XmlDocument 470
Загрузка и сохранение объекта XmlDocument 471
Обход дерева XmlDocument 471
Свойства InnerText и InnerXml 472
Создание узлов и манипуляции с ними 472
Пространства имен 473
Язык XPath 474
Самые распространенные операторы XPath 475
Класс XPathNavigator 476
Выдача запросов с учетом пространств имен 477
Класс XPathDocument 478
XSD и проверка корректности документа 478
Проверка соответствия схеме 479
Проверка с помощью класса XmlReader 479
Проверка дерева X-DOM или объекта XmlDocument 481
XSLT 481
Глава 12. Удаление объектов и сборка мусора 483
Интерфейс IDisposable и методы Dispose и Close 483
Стандартная семантика удаления объектов 484
Методы Close и Stop 485
Когда следует удалять объекты 485
Условное удаление 486
Сборка мусора и финализаторы 488
Вызов метода Dispose из финализатора 490
Как работает сборщик мусора 491
Приемы оптимизации 492
Принудительная сборка мусора 492
Альтернативы сборке мусора 493
Глава 13. Потоки и ввод/вывод 495
Архитектура потоков 495
Работа с потоками 497
Чтение и запись 498
Перемещение внутри потока 499
Закрытие и очистка буфера 500
Тайм-ауты 500
Безопасность работы нитей с потоками 500
Поток с резервным хранилищем 501
Класс FileStream 501
Конструирование объекта FileStream 501
Указание имени файла 502
Указание режима FileMode 502
Дополнительные характеристики класса FileStream 504
Класс MemoryStream 504
Класс PipeStream 505
Именованные каналы 506
Анонимные каналы 507
Класс BufferedStream 509
Потоковые адаптеры 510
Текстовые адаптеры 510
Классы StreamReader и StreamWriter 512
Кодировки символов 513
Классы StringReader и StringWriter 515
Двоичные адаптеры 515
Закрытие и удаление адаптеров потоков 516
Операции с файлами и каталогами 517
Класс File 518
Атрибуты архивирования и шифрования 519
Безопасность файла 520
Класс Directory 521
Классы FileInfo и DirectoryInfo 522
Класс Path 523
Специальные папки 524
Получение информации о томе 525
Слежение за событиями файловой системы 525
Сжатие файлов 526
Сжатие данных в памяти 528
Изолированная память 528
Виды изоляции 529
Чтение и запись в изолированную память 531
Местоположение изолированной памяти 532
Перебор элементов изолированной памяти 533
Глава 14. Работа в сети 535
Архитектура сети 535
Адреса и порты 537
URI 538
Архитектура "запрос/ответ" 540
Класс WebClient 541
Классы WebRequest и WebResponse 542
Прокси-серверы 543
Аутентификация 544
Класс CredentialCache 546
Параллелизм 546
Обработка исключений 548
Поддержка протокола HTTP 549
Заголовки 549
Строки запросов 550
Выгрузка данных формы 550
Cookie 551
Аутентификация с помощью форм 553
SSL 554
Создание HTTP-сервера 554
Работа с протоколом FTP 558
Работа с DNS 560
Отправка почты с помощью класса SmtpClient 560
Работа с протоколом ТСР 561
Параллелизм и TCP 564
Прием POP3-почты с помощью протокола ТСР 565
Глава 15. Сериализация 567
Концепции сериализации 567
Механизмы сериализации 567
Зачем нужны три механизма? 568
Сериализатор с контрактом данных 569
Двоичный сериализатор 569
Класс XmlSerializer 570
Интерфейс IXmlSerializable 570
Форматеры 570
Явная и неявная сериализация 571
Сериализатор с контрактом данных 571
Классы DataContractSerializer и NetDataContractSerializer 572
Применение сериализаторов 573
Использование двоичного форматера 575
Сериализация подклассов 575
Ссылки на объекты 577
Сохранение ссылок на объекты 578
Устойчивость к изменению версии 579
Необходимые члены типа 580
Порядок следования членов 580
Пустое значение и значение null 581
Контракты данных и коллекции 582
Элементы коллекции с подклассами 583
Изменение имен коллекций и элементов 583
Расширение контрактов данных 585
Инструменты сериализации и десериализации 585
Взаимодействие с типом, помеченным как [Serializable] 586
Взаимодействие с типом, реализующим интерфейс IXmlSerializable 588
Двоичный сериализатор 588
С чего начать 589
Атрибуты двоичной сериализации 590
Атрибут [NonSerialized] 590
Атрибуты [OnDeserializing] и [OnDeserialized] 591
Атрибуты [OnSerializing] и [OnSerialized] 592
Атрибут [OptionalField] и сопровождение версий 593
Двоичная сериализация и интерфейс ISerializable 594
Создание подклассов сериализуемых классов 596
XML-сериализация 597
Сериализация на основе атрибутов 598
Атрибуты, имена и пространства имен 599
Порядок следования XML-элементов 600
Подклассы и объекты-потомки 600
Образование подкласса от корневого типа 600
Сериализация объектов-потомков 601
Подклассы объектов-потомков 602
Сериализация коллекций 603
Работа с элементами коллекций, имеющими подклассы 605
Интерфейс IXmlSerializable 605
Глава 16. Сборки 609
Что такое сборка 609
Манифест сборки 610
Указание атрибутов сборки 611
Манифест приложения 611
Развертывание манифеста приложения 611
Модули 612
Класс Assembly 613
Подписание сборки 614
Как подписать сборку 615
Отсроченное подписание 616
Имена сборок 617
Полностью квалифицированные имена 618
Класс AssemblyName 618
Глобальный кэш сборок 619
Как устанавливать сборки в глобальном кэше сборок 620
Глобальный кэш сборок и отслеживание версий 621
Ресурсы и вспомогательные сборки 622
Непосредственное встраивание ресурсов 623
Файлы .resources 624
Файлы .resx 625
Создание .resx-файла из командной строки 625
Чтение файлов .resources 626
Создание URI типа "pack" в Visual Studio 627
Вспомогательные сборки 627
Построение вспомогательных сборок 628
Тестирование вспомогательных сборок 629
Поддержка Visual Studio 629
Культуры и субкультуры 630
Поиск и загрузка сборок 631
Правила поиска сборок и типов 631
Событие AssemblyResolve 632
Загрузка сборок 632
Загрузка из файла 633
Развертывание сборок за пределами базового каталога 634
Упаковка однофайлового приложения 636
Избирательное наложение "заплат" 637
Работа со сборками, на которые нет ссылок 637
Глава 17. Отражение и метаданные 641
Отражение и активизация типов 641
Получение экземпляра класса Type 641
Получение типов массивов 642
Получение вложенных типов 643
Имена типов 643
Имена вложенных типов 644
Имена обобщенных типов 644
Имена массивов и типов указателей 644
Имена типов параметров с модификаторами ref и out 644
Базовые типы и интерфейсы 645
Создание экземпляров типов 645
Обобщенные типы 647
Отражение и вызов членов 647
Типы-члены 649
Члены C# и члены CLR 651
Члены обобщенных типов 652
Динамический вызов члена 653
Параметры методов 653
Повышение производительности с помощью делегатов 654
Обращение к закрытым членам 654
Перечисление BindingFlags 655
Обобщенные методы 656
Анонимный вызов членов обобщенного типа 656
Отражение сборок 658
Загрузка сборки в контекст, допускающий только отражение 659
Модули 659
Работа с атрибутами 660
Основы работы с атрибутами 660
Атрибут AttributeUsage 661
Определение собственного атрибута 662
Чтение атрибутов на этапе выполнения 663
Получение атрибутов в контексте отражения 665
Динамическое генерирование кода 665
Генерирование IL-кода с помощью класса DynamicMethod 665
Стек вычислений 667
Передача параметров классу DynamicMethod 668
Генерирование локальных переменных 669
Ветвление 670
Создание объектов и вызов экземплярных методов 670
Обработка исключений 672
Генерирование сборок и типов 673
Сохранение порожденных сборок 674
Объектная модель Reflection.Emit 675
Генерирование членов типа 676
Генерирование методов 677
Генерирование методов экземпляров 678
Атрибут HideBySig 678
Генерирование полей и свойств 679
Генерирование конструкторов 680
Вызов конструкторов базовых классов 681
Добавление атрибутов 682
Генерирование обобщенных методов и типов 682
Определение обобщенных методов 682
Определение обобщенных типов 684
Неудобные цели генерирования 684
Несозданные замкнутые обобщенные типы 684
Циклические зависимости 685
Анализ IL-кода 688
Написание дизассемблера 688
Глава 18. Безопасность 695
Разрешения 695
Классы CodeAccessPermission и PrincipalPermission 696
Интерфейс IPermission 697
Класс PermissionSet 698
Декларативная и принудительная безопасность 699
Безопасность обращения к коду 699
Как CLR выделяет разрешения 701
Работа в изоляции 703
Необязательные разрешения 704
Флаг SecurityAction.RequestOptional 704
Изоляция другой сборки 705
Требования связывания и частичное доверие к вызывающему коду 706
Как утверждать права 707
Безопасность в операционной системе 708
Работа под стандартной пользовательской учетной записью 709
Повышение прав и виртуализация 710
Безопасность, основанная на именах и ролях 711
Указание пользователей и ролей 712
Обзор криптографических возможностей 713
Защита данных Windows 713
Хеширование 714
Симметричное шифрование 716
Шифрование в памяти 717
Образование цепочек из потоков шифрования 719
Уничтожение шифрующих объектов 720
Управление ключами 721
Шифрование с открытым ключом и постановка цифровой подписи 721
Класс RSA 722
Цифровая подпись 723
Глава 19. Нити выполнения 725
Правильное использование нитей 725
Основы 726
Передача данных 729
Совместное обращение к данным 730
Пулы нитей 731
Оптимизация пула 733
Приоритетные и фоновые нити 734
Приоритет нити 735
Обработка исключений 736
Асинхронные делегаты 737
Синхронизация 739
Приостановка выполнения 740
Приостановка и работа вхолостую 741
Метод SpinWait 741
Блокировка 741
Выбор синхронизирующего объекта 743
Вложенные блокировки 744
Когда ставить блокировку 744
Блокировка и атомарность 745
Производительность кода, соперничество блокировок и взаимные блокировки 745
Класс Mutex 746
Класс Semaphore 747
Безопасность нитей 748
Безопасность нитей и типы .NET Framework 750
Блокирование безопасных объектов 751
Статические методы 751
Безопасность нитей в серверах приложений 752
Безопасность нитей в многофункциональных клиентских приложениях 753
Незадерживающая синхронизация 754
Атомарность и класс Interlocked 754
Барьеры памяти и некэшируемость 756
Сигнализация с помощью дескрипторов ожидания событий 757
Создание и уничтожение дескрипторов ожидания 759
Двухсторонняя сигнализация 760
Создание объекта EventWaitHandle для нескольких процессов 761
Пул дескрипторов ожидания 761
Методы WaitAny, WaitAll и SignalAndWait 763
Сигнализация с помощью методов Wait и Pulse 763
Как пользоваться методами Wait и Pulse 764
Очередь "производитель/потребитель" 767
Тайм-ауты метода Wait 770
Двухсторонняя сигнализация 771
Имитация дескрипторов ожидания 773
Методы Interrupt и Abort 774
Метод Interrupt 774
Метод Abort 776
Безопасное завершение 776
Локальное хранение данных 777
Класс BackgroundWorker 778
Создание подкласса для BackgroundWorker 782
Класс ReaderWriterLockSlim 783
Обновляемые блокировки и рекурсия 785
Рекурсия блокировок 787
Таймеры 788
Многонитевые таймеры 788
Однонитевые таймеры 790
Глава 20. Асинхронные методы 793
Для чего существуют асинхронные методы 793
Сигнатуры асинхронных методов 794
Асинхронные методы и асинхронные делегаты 795
Применение асинхронных методов 796
Написание асинхронных методов 799
Поддельные асинхронные методы 802
Альтернативы асинхронным методам 803
Асинхронные события 804
Глава 21. Домены приложений 805
Архитектура доменов приложений 805
Создание и уничтожение доменов приложений 805
Работа с несколькими доменами приложения 808
Метод DoCallBack 810
Домены и нити 811
Совместное обращение к данным из разных доменов 812
Применение слотов 812
Удаленное взаимодействие внутри процесса 813
Изолирование типов и сборок 815
Раскрытие типа 817
Глава 22. Интеграция с DLL 819
Вызов кода из DLL 819
Маршалинг обычных типов 820
Маршалинг классов и структур 821
Входной и выходной маршалинг 822
Обратные вызовы из неуправляемого кода 823
Имитация объединения из языка С 824
Совместно используемая память 825
Отображение структуры в неуправляемую память 827
Ключевое слово fixed 830
Справочник по атрибутам 831
Атрибут DllImport 831
Атрибут StructLayout 832
Атрибут FieldOffset 833
Атрибут MarshalAs 833
Элементы перечисления UnmanagedType 834
Глава 23. Диагностика 837
Условная компиляция 837
Условная компиляция как альтернатива статическим переменным-флагам 838
Атрибут Conditional 839
Альтернативы атрибуту Conditional 840
Классы Debug и Trace 840
Класс TraceListener 841
Принудительная запись на диск и закрытие слушателей 843
Интеграция с отладчиком 843
Присоединение отладчика и прерывание выполнения 844
Атрибуты отладчика 844
Процессы и нити 845
Анализ работающего процесса 845
Анализ нитей в процессе 845
Классы StackTrace и StackFrame 846
Журнал событий Windows 848
Запись в журнал событий 848
Чтение журнала событий 849
Мониторинг журнала событий 849
Счетчики производительности 850
Просмотр доступных счетчиков 851
Чтение данных из счетчиков производительности 852
Создание счетчиков и запись данных о производительности 853
Класс Stopwatch 855
Глава 24. Регулярные выражения 857
Основы регулярных выражений 857
Откомпилированные регулярные выражения 858
Перечисление RegexOptions 859
Экранирование символов 860
Множества символов 861
Квантификаторы 862
"Жадные" и "ленивые" квантификаторы 863
Директивы нулевой длины 863
Просмотр вперед и просмотр назад 864
Якоря 865
Границы слов 866
Группы 866
Именованные группы 867
Замещение и разбивка на части 868
Делегат MatchEvaluator 869
Разбивка текста 869
Сборник рецептов по регулярным выражениям 870
Рецепты 870
Шаблон для номера социальной страховки или номера телефона в США 870
Извлечение пар "имя=значение" (по одной в строчке текста) 870
Проверка сильного пароля 870
Строки длиной не менее 80 символов 870
Разбор даты и времени 871
Шаблон для римских чисел 871
Удаление повторяющихся слов 871
Подсчет слов 872
Шаблон для глобального уникального идентификатора 872
Разбор XML-тега 872
Разбивка на части слова, написанного в стиле camel 872
Получение допустимого имени файла 872
Экранирование символов Unicode для HTML-кода 873
Справочник по языку регулярных выражений 873
Приложение 1. Ключевые слова языка C# 879
Приложение 2. Соответствие сборок пространствам имен 889
Предметный указатель 899
Штрихкод:   9785977502450
Аудитория:   Общая аудитория
Масса:   848 г
Размеры:   234x 167x 1 мм
Тираж:   2 000
Литературная форма:   Справочник
Сведения об издании:   3-е издание
Метки:  Близкие метки
Отзывы
Найти пункт
 Выбрать станцию:
жирным выделены станции, где есть пункты самовывоза
Выбрать пункт:
Поиск по названию улиц:
Подписка 
Введите Reader's код или e-mail
Периодичность
При каждом поступлении товара
Не чаще 1 раза в неделю
Не чаще 1 раза в месяц
Мы перезвоним

Возникли сложности с дозвоном? Оформите заявку, и в течение часа мы перезвоним Вам сами!

Captcha
Обновить
Сообщение об ошибке

Обрамите звездочками (*) место ошибки или опишите саму ошибку.

Скриншот ошибки:

Введите код:*

Captcha
Обновить