О 5. 0
Карманный справочник
О 5. 0
Pocket Reference
Joseph Albahari and
BenAlbahari
O’REILLY*
Beijing • Cambridge • Farnham - Koln • Sebastopol - Tokyo
С# 5. 0
Карманный справочник
Джозеф Албахари
БенАлбахари
Москва • Санкт-Петербург • Киев
2013
ББК 32. 973. 26-018. 2. 75
А45
УДК 681. 3. 07
Издательский дом “Вильямс”
Зав. редакцией С. Н. Тригуб
Перевод с английского и редакция докг. физ. -мат. А45 С# 5. 0. Карманный справочник. : Пер. с англ. — М. :
ООО “ИД Вильямс”, 2013. — 288 с. : ил. — Парал. тит. англ. ISBN 978-5-8459-1820-8 (рус. )
ББК 32. 973. 26-018. 2. 75
Все названия программных продуктов являются зарегистрирован¬
ными торговыми марками соответствующих фирм. Никакая часть настоящего издания ни в каких целях не может быть
воспроизведена в какой бы то ни было форме и какими бы то ни было
электронные или механические, включая фотоко-
т/ровзние и запись на магнитный носитель, если на это нет письмен¬
ного разрешения издательства O’Reilly Media, Inc. Authorized Russian translation of the English edition of C* 5. 0 Pocket
Reference: Instant Help for C# 50 Programmers © 2012 Joseph Albahari and
Ben Albahari (ISBN 9781449320171). This translation is published and sold by permission of O’Reilly Media,
Inc. , which owns or controls all rights to publish and sell the same.
All rights reserved. No part of this work may be reproduced or transmit¬
ted in any form or by any means, electronic or mechanical, including photo¬
copying, recording, or by any information storage or retrieval system, with¬
out the prior written permission of the copyright owner and the Publisher. Научно-популярное издание
Джозеф Албахари, Бен Албахари
С# 5. 0. Карманный справочник
Литературный редактор И. А Попова
Верстка АН. Полинчик
Художественный редактор В. Г. Павлюшин
Корректор Л. АГордиенко
Подписано в печать 13. 11. 2012. Формат 70х 100/32
Гарнитура Times. Печать офсетная
Уел. печ. л. 11,61. Уч. -изд. л. 7,4
Тираж 2000 экз. Заказ № 591
Первая Академическая типография “Наука”
199034, Санкт-Петербург, 9-я линия, 12/28
ООО “И. Д. Вильямс”, 127055, г. Москва, ул. Лесная, д. 43, стр. 1
ISBN 978-5-8459-1820-8 (рус. ) © 2013 Издательский дом “Вильямс”
ISBN 978-1-4493-2017-1 (англ. ) © 2012 Joseph Albahari and Ben Albahari
Содержание
КАРМАННЫЙ СПРАВОЧНИК ПО C# 5. 0
13
Обозначения, принятые в книге
14
Использование примеров кода
15
Библиотека Safari® Books Online
16
Ждем ваших отзывов!
17
Первая программа на языке C#
18
Компиляция
21
Синтаксис
22
Идентификаторы и ключевые слова
23
Предотвращение конфликтов
24
Контекстные ключевые слова
25
Литералы, знаки пунктуации и операции
25
Комментарии
26
Основы типов
27
Примеры предопределенных типов
27
Примеры пользовательских типов
29
Преобразования
32
Типы значений и ссылочные типы
33
Классификация предопределенных типов
37
Числовые типы
38
Числовые литералы
39
Числовые преобразования
41
Арифметические операции
42
Специализированные целочисленные
операции
8- и 16-битовые целочисленные типы
Специальные значения типов float и double
Ошибки округления действительных чисел
Булев тип и операции
Операция проверки равенства и сравнения
Условные операции
Строки и символы
Тип string
Массивы
Инициализация элемента по умолчанию
Многомерные массивы
Переменные и параметры
Стек и куча
Определенное присваивание
Значения по умолчанию
Выражения и операции
Выражения присваивания
Приоритет и ассоциативность операций
Операторы
Оператор объявления
Операторы-выражения
Оператор выбора
Итерационные операторы
Операторы перехода
42
44
45
47
47
48
48
50
51
54
56
57
59
59
61
62
70
71
72
76
76
77
77
81
84
6 | Содержание
Пространства имен
85
Правила в пространстве имен
88
Классы
90
Статические классы
102
Финализаторы
102
Частичные типы и методы
103
Наследование
105
Виртуальные функции-члены
109
Конструкторы и наследование
113
Перегрузка и разрешение
115
Тип object
116
Упаковка и распаковка
117
Статическая и динамическая проверка
118
Метод GetType и операция typeof
119
Структуры
122
Семантика создания структуры
123
Модификаторы доступа
123
Интерфейсы
125
Расширение интерфейса
127
Явная реализация интерфейса
127
Виртуальная реализация членов интерфейса
Повторная реализация интерфейса в
128
подклассе
129
Перечисления
130
Преобразования перечислений
131
Перечисление флагов перечислений
132
Операции над перечислениями
133
Содержание | 7
Вложенные типы 133
Обобщения 134
Обобщенные типы 135
Обобщенные методы 137
Объявление параметров типа 138
Операция typeof и несвязанные обобщенные
типы 139
Ограничения обобщений 140
Вывод подклассов обобщенных типов 142
Самоссылающиеся обобщенные объявления 142
Статические данные 143
Ковариантность 143
Контравариантность 146
Делегаты 147
Создание подключаемых методов с помощью
делегатов 148
Г рупповые делегаты 149
Целевые методы экземпляра и целевые
статические методы 151
Обобщенные типы делегатов 151
Делегаты Func и Action 151
Совместимость делегатов 152
События 155
Стандартная модель событий 158
Методы доступа в событиях 161
Лямбда-выражения 163
Захват внешних переменных 165
8 | Содержание
Анонимные методы 168
Оператор try и исключения 169
Раздел catch 172
Блок finally 174
Генерирование исключений 176
Основные свойства класса System. Exception 177
Общие типы исключений 178
Перечисления и итераторы 180
Перечисление 180
Инициализаторы коллекции 181
Итераторы 182
Семантика итераторов 183
Композиции последовательностей 185
Типы, допускающие значение NULL 187
Структура Nullable
187
Преобразования, допускающие значение
NULL 188
Упаковка/распаковка значений, допускающих
NULL 189
Заимствование операций 189
Применение операций & и | к операндам типа
bool? 192
Операция?? 192
Перегрузка операций 193
Операторные функции 194
Перегрузка операций проверки равенства и
сравнения 195
Содержание | 9
Ячные и неявные пользовательские
преобразования
196
Расширяющие методы
197
Создание цепочек методов расширения
198
Неоднозначность и разрешение
199
Анонимные типы
199
Язык запросов LINQ
201
Основы языка LINQ
201
Отложенное выполнение
207
Стандартные операции запроса
210
Создание цепочек операций запроса
214
Выражения запросов
215
Ключевое слово let
220
Продолжения запросов
221
Множественные генераторы
222
Соединение
224
Упорядочение
229
Г руппирование
230
Методы OfType и Cast
232
Динамическое связывание
233
Статическое и динамическое связывание
234
Специальное связывание
236
Языковое связывание
237
Исключение RuntimeBinderException
239
Представление динамического типа на этапе
выполнения программы
240
Динамические преобразования
241
10 | Содержание
Типы var и dynamic 241
Динамические выражения 242
Разрешение перегрузки динамического члена 243
Невызываемые функции 245
Атрибуты 246
Классы атрибутов 247
Именованные и позиционные параметры
атрибутов 248
Цели атрибутов 249
Задание нескольких атрибутов 249
Создание собственных атрибутов 249
Получение атрибутов на этапе выполнения
программы 251
Атрибуты сведений о вызывающей стороне
(C# 5. 0) 252
Асинхронные функции (C# 5. 0) 254
Ключевые слова await и async 256
Перехват локального состояния 260
Создание асинхронных функций 261
Параллелизм 264
Асинхронные лямбда-выражения 265
Небезопасный код и указатели 266
Основы указателей 267
Небезопасный код 267
Оператор fixed 268
Указатель на член класса 269
Массивы 270
Содержание | 11
Указатель void* 271
Директивы препроцессора 272
Директива pragma warning 274
Документация XML 275
Стандартные дескрипторы документации XML 276
Об авторах 280
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ 281
12 | Содержание
Карманный справочник по C# 5. 0
С#— универсальный, типизированный, объектно-
ориентированный язык программирования.