Язык программирования C#. Классика Computers Science

А. Хейлсберг, М. Торгерсен, С. Вилтамут, П. Голд

Перед вами - четвертое издание главной книги по языку C#, написанной легендой программирования - Андерсом Хейлсбергом, архитектором C#, Delphi и Turbo Pascal, совместно с другими специалистами, входившими в группу разработчиков C# компании Microsoft. Издание является наиболее полным описанием языка и самым авторитетным источником информации по этой теме, построенным в формате сборника спецификаций, включающих в себя описание синтаксиса, сопутствующие материалы и примеры, а также образцы кода. Эта книга - своего рода «библия» разработчика, которая с легкостью может заменить как MSDN, так и остальные книги по C#.

Четвертое издание содержит описание новых особенностей C# 4.0, включая динамическое связывание, именованные и необязательные параметры, а также ковариантные и контравариантные обобщенные типы. Цель этих новшеств - расширение возможностей C# для взаимодействия с объектами, не относящимися к платформе .NET. Отличительная особенность нового издания также состоит в том, что каждая глава книги содержит обширные комментарии, написанные известными «гуру» программирования, такими как Джон Скит, Джозеф Альбахари, Билл Вагнер, Кристиан Нейгел, Эрик Липперт и другими.

Издательство: Питер, 4-е издание, 2012 г.

ISBN 978-5-459-00283-6, 978-0321741769

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

Содержание книги «Язык программирования C#. Классика Computers Science»:

  • 21 Предисловие
  • 23 К читателю
  • 25 Об авторах
  • 26 Об авторах комментариев
  • 28 Глава 1 Введение
    • 30 1.1 Здравствуй, Мир
    • 31 1.2 Структура программы
    • 33 1.3 Типы и переменные
    • 39 1.4 Выражения
    • 41 1.5 Операторы
    • 45 1.6 Классы и объекты
      • 46 1.6.1 Элементы класса
      • 47 1.6.2 Доступность
      • 48 1.6.3 Параметры-типы
      • 49 1.6.4 Базовые классы
      • 50 1.6.5 Поля
      • 51 1.6.6 Методы
        • 52 1.6.6.1 Параметры
        • 55 1.6.6.2 Тело метода и локальные переменные
        • 56 1.6.6.3 Статические методы и методы экземпляра
        • 57 1.6.6.4 Виртуальные, переопределенные и абстрактные методы
        • 60 1.6.6.5 Перегрузка методов
      • 62 1.6.7 Другие функциональные элементы класса
        • 64 1.6.7.1 Конструкторы
        • 64 1.6.7.2 Свойства
        • 67 1.6.7.3 Индексаторы
        • 68 1.6.7.4 События
        • 69 1.6.7.5 Операции
        • 70 1.6.7.6 Деструкторы
    • 71 1.7 Структуры
    • 73 1.8 Массивы
    • 75 1.9 Интерфейсы
    • 77 1.10 Перечисления
    • 79 1.11 Делегаты
    • 80 1.12 Атрибуты
  • 83 Глава 2 Лексическая структура
    • 83 2.1 Программы
    • 83 2.2 Грамматики
      • 83 2.2.1 Система обозначений
      • 85 2.2.2 Лексическая грамматика
      • 85 2.2.3 Синтаксическая грамматика
    • 85 2.3 Лексический анализ
      • 86 2.3.1 Символы конца строки
      • 86 2.3.2 Комментарии
      • 88 2.3.3 Пробельные символы
    • 88 2.4 Лексемы
      • 88 2.4.1 Управляющие последовательности Unicode
      • 89 2.4.2 Идентификаторы
      • 92 2.4.3 Ключевые слова
      • 93 2.4.4 Литералы (константы)
        • 93 2.4.4.1 Булевские константы
        • 93 2.4.4.2 Целочисленные константы
        • 95 2.4.4.3 Вещественные константы
        • 96 2.4.4.4 Символьные константы
        • 97 2.4.4.5 Строковые константы
        • 100 2.4.4.6 Константа null
      • 100 2.4.5 Знаки операций и пунктуации
    • 101 2.5 Директивы препроцессора
      • 102 2.5.1 Символы условной компиляции
      • 103 2.5.2 Выражения препроцессора
      • 103 2.5.3 Директивы объявлений
      • 105 2.5.4 Директивы условной компиляции
      • 108 2.5.5 Директивы диагностики
      • 109 2.5.6 Директивы region
      • 109 2.5.7 Директивы line
      • 110 2.5.8 Директива pragma
        • 111 2.5.8.1 Предупреждения pragma warning
  • 113 Глава 3 Основные понятия
    • 113 3.1 Запуск приложения
    • 114 3.2 Завершение работы приложения
    • 115 3.3 Объявления
    • 118 3.4 Элементы пространств имен и типов
      • 119 3.4.1 Элементы пространств имен
      • 119 3.4.2 Элементы структур
      • 120 3.4.3 Элементы перечислений
      • 120 3.4.4 Элементы классов
      • 120 3.4.5 Элементы интерфейсов
      • 120 3.4.6 Элементы массивов
      • 120 3.4.7 Элементы делегатов
    • 121 3.5 Доступ к элементам
      • 121 3.5.1 Объявление вида доступа
      • 124 3.5.2 Области доступности
      • 127 3.5.3 Доступ protected для элементов экземпляров
      • 129 3.5.4 Ограничения доступа
    • 130 3.6 Сигнатуры и перегрузка
    • 133 3.7 Области видимости
      • 136 3.7.1 Скрытие имен
        • 137 3.7.1.1 Скрытие в результате вложения
        • 138 3.7.1.2 Скрытие в результате наследования
    • 140 3.8 Имена пространств имен и типов
      • 143 3.8.1 Полные имена
    • 144 3.9 Автоматическое управление памятью
    • 149 3.10 Порядок выполнения
  • 151 Глава 4 Типы
    • 151 4.1 Типы-значения
      • 152 4.1.1 Тип System.ValueType
      • 153 4.1.2 Конструкторы по умолчанию
      • 154 4.1.3 Структурные типы
      • 155 4.1.4 Простые типы
      • 156 4.1.5 Целочисленные типы
      • 158 4.1.6 Типы с плавающей точкой
      • 161 4.1.7 Десятичный тип
      • 162 4.1.8 Булевский тип
      • 163 4.1.9 Перечислимые типы
      • 163 4.1.10 Обнуляемые типы
    • 164 4.2 Ссылочные типы
      • 165 4.2.1 Классы
      • 166 4.2.2 Тип object
      • 166 4.2.3 Тип dynamic
      • 166 4.2.4 Тип string
      • 166 4.2.5 Интерфейсы
      • 166 4.2.6 Массивы
      • 167 4.2.7 Делегаты
    • 167 4.3 Упаковка и распаковка
      • 168 4.3.1 Упаковка
      • 170 4.3.2 Распаковка
    • 172 4.4 Сконструированные типы
      • 173 4.4.1 Аргументы-типы
      • 173 4.4.2 Открытые и закрытые типы
      • 174 4.4.3 Ограниченные и неограниченные типы
      • 174 4.4.4 Соблюдение ограничений
    • 175 4.5 Параметры-типы
    • 176 4.6 Типы деревьев выражений
    • 177 4.7 Тип dynamic
  • 179 Глава 5 Переменные
    • 179 5.1 Категории переменных
      • 180 5.1.1 Статические переменные
      • 180 5.1.2 Переменные экземпляра
        • 180 5.1.2.1 Переменные экземпляра в классах
        • 181 5.1.2.2 Переменные экземпляра в структурах
      • 181 5.1.3 Элементы массива
      • 181 5.1.4 Параметры-значения
      • 182 5.1.5 Параметры-ссылки
      • 183 5.1.6 Выходные параметры
      • 183 5.1.7 Локальные переменные
    • 185 5.2 Значение по умолчанию
    • 186 5.3 Явное присваивание
      • 187 5.3.1 Инициализированные переменные
      • 187 5.3.2 Неинициализированные переменные
      • 188 5.3.3 Точные правила для определения явного присваивания
        • 188 5.3.3.1 Общие правила для операторов
        • 189 5.3.3.2 Блок, операторы checked и unchecked
        • 189 5.3.3.3 Оператор-выражение
        • 189 5.3.3.4 Операторы объявления
        • 190 5.3.3.5 Условный оператор
        • 190 5.3.3.6 Оператор выбора
        • 190 5.3.3.7 Оператор цикла while
        • 191 5.3.3.8 Оператор цикла do
        • 191 5.3.3.9 Оператор цикла for
        • 191 5.3.3.10 Операторы перехода break, continue и goto
        • 191 5.3.3.11 Оператор throw
        • 192 5.3.3.12 Оператор return
        • 192 5.3.3.13 Оператор try-catch
        • 192 5.3.3.14 Оператор try-fnally
        • 193 5.3.3.15 Оператор try-catch-finally
        • 194 5.3.3.16 Оператор foreach
        • 194 5.3.3.17 Оператор using
        • 194 5.3.3.18 Оператор lock
        • 194 5.3.3.19 Оператор yield
        • 195 5.3.3.20 Общие правила для простых выражений
        • 195 5.3.3.21 Общие правила для выражений с вложенными выражениями
        • 195 5.3.3.22 Выражения вызова и выражения создания объекта
        • 196 5.3.3.23 Выражения простого присваивания
        • 196 5.3.3.24 &&-выражения
        • 197 5.3.3.25 Выражения ||
        • 198 5.3.3.26 Выражения !
        • 198 5.3.3.27 Выражения ??
        • 198 5.3.3.28 Выражения ?
        • 199 5.3.3.29 Анонимные функции
    • 200 5.4 Ссылки на переменные
    • 200 5.5 Атомарность ссылок на переменные
  • 201 Глава 6 Приведение типов
    • 202 6.1 Неявные приведения типов
      • 202 6.1.1 Тождественные преобразования
      • 203 6.1.2 Неявные приведения арифметических типов
      • 203 6.1.3 Неявные приведения перечислений
      • 204 6.1.4 Неявные приведения обнуляемых типов
      • 205 6.1.5 Неявные приведения литерала null
      • 205 6.1.6 Неявные приведения ссылочных типов
      • 207 6.1.7 Преобразования упаковки
      • 207 6.1.8 Неявные приведения типа dynamic
      • 208 6.1.9 Неявные приведения константных выражений
      • 209 6.1.10 Неявные приведения параметров-типов
      • 210 6.1.11 Определенные пользователем неявные приведения типов
      • 210 6.1.12 Приведения анонимной функции и группы методов
    • 210 6.2 Явные приведения типов
      • 210 6.2.1 Явные приведения арифметических типов
      • 213 6.2.2 Явные приведения перечислений
      • 213 6.2.3 Явные приведения обнуляемых типов
      • 214 6.2.4 Явные приведения ссылочных типов
      • 215 6.2.5 Преобразование распаковки
      • 216 6.2.6 Явные приведения типа dynamic
      • 217 6.2.7 Явное приведение параметров-типов
      • 218 6.2.8 Определенные пользователем явные приведения типов
    • 219 6.3 Стандартные приведения типов
      • 219 6.3.1 Стандартные неявные преобразования
      • 219 6.3.2 Стандартные явные преобразования
    • 220 6.4 Приведения типов, определенные пользователем
      • 220 6.4.1 Допустимые приведения типов, определенные пользователем
      • 220 6.4.2 Повышающие (lifted) приведения типов
      • 221 6.4.3 Выполнение определенных пользователем приведений
      • 222 6.4.4 Определенные пользователем неявные приведения типов
      • 223 6.4.5 Определенные пользователем явные приведения типов
    • 225 6.5 Приведения анонимных функций
      • 227 6.5.1 Выполнение приведений анонимных функций к типам делегатов
      • 228 6.5.2 Выполнение приведений анонимных функций к деревьям выражений
      • 228 6.5.3 Пример реализации
    • 232 6.6 Приведения групп методов
  • 236 Глава 7 Выражения
    • 236 7.1 Классификация выражений
      • 238 7.1.1 Значение выражений
    • 239 7.2 Статическое и динамическое связывание
      • 240 7.2.1 Время связывания
      • 240 7.2.2 Динамическое связывание
      • 242 7.2.3 Типы составных частей выражений
    • 243 7.3 Операции
      • 243 7.3.1 Приоритет и ассоциативность операций
      • 245 7.3.2 Перегрузка операций
      • 247 7.3.3 Разрешение перегрузки унарных операций
      • 247 7.3.4 Разрешение перегрузки бинарной операции
      • 248 7.3.5 Набор определенных пользователем операций
      • 248 7.3.6 Числовое расширение
        • 249 7.3.6.1 Унарное числовое расширение
        • 249 7.3.6.2 Бинарное числовое расширение
      • 250 7.3.7 Расширенные операции
    • 251 7.4 Поиск элемента
      • 254 7.4.1 Базовые типы
    • 254 7.5 Функциональные элементы
      • 257 7.5.1 Списки аргументов
        • 258 7.5.1.1 Соответствующие параметры
        • 260 7.5.1.2 Вычисление списка аргументов во время выполнения программы
      • 262 7.5.2 Выведение типов
        • 264 7.5.2.1 Первая фаза
        • 265 7.5.2.2 Вторая фаза
        • 265 7.5.2.3 Входные типы
        • 265 7.5.2.4 Выходные типы
        • 265 7.5.2.5 Зависимость
        • 266 7.5.2.6 Выведение выходного типа
        • 266 7.5.2.7 Явное выведение типа параметра
        • 266 7.5.2.8 Точное выведение
        • 267 7.5.2.9 Выведение нижней границы
        • 268 7.5.2.10 Выведение верхней границы
        • 269 7.5.2.11 Фиксация
        • 270 7.5.2.12 Выведенный тип возвращаемого значения
        • 271 7.5.2.13 Выведение типа для преобразования группы методов
        • 272 7.5.2.14 Нахождение наилучшего общего типа для набора выражений
      • 272 7.5.3 Разрешение перегрузки
        • 273 7.5.3.1 Подходящий функциональный элемент
        • 274 7.5.3.2 Лучший функциональный элемент
        • 276 7.5.3.3 Лучшее приведение из выражения
        • 276 7.5.3.4 Лучшее приведение из типа
        • 276 7.5.3.5 Лучший целевой объект приведения
        • 277 7.5.3.6 Перегрузка в обобщенных классах
      • 277 7.5.4 Проверка динамического разрешения перегрузки во время компиляции
      • 278 7.5.5 Вызов функционального элемента
        • 280 7.5.5.1 Вызовы для упакованных экземпляров
    • 280 7.6 Первичные выражения
      • 281 7.6.1 Литералы
      • 281 7.6.2 Простые имена
        • 283 7.6.2.1 Инвариантное значение в блоках
      • 285 7.6.3 Выражения в скобках
      • 285 7.6.4 Доступ к элементу
        • 288 7.6.4.1 Идентичные простые имена и имена типов
        • 288 7.6.4.2 Грамматическая неоднозначность
      • 289 7.6.5 Выражения вызова
        • 290 7.6.5.1 Вызов метода
        • 294 7.6.5.2 Вызов метода расширения
        • 299 7.6.5.3 Вызов делегата
      • 299 7.6.6 Доступ к элементу массива
        • 300 7.6.6.1 Доступ к массиву
        • 301 7.6.6.2 Доступ к индексатору
      • 302 7.6.7 this-доступ
      • 303 7.6.8 Base-доступ
      • 304 7.6.9 Постфиксные инкрементные и декрементные операции
      • 306 7.6.10 Операция new
        • 306 7.6.10.1 Выражения создания объекта
        • 308 7.6.10.2 Инициализаторы объектов
        • 311 7.6.10.3 Инициализаторы коллекций
        • 313 7.6.10.4 Выражения создания массива
        • 315 7.6.10.5 Выражения создания делегата
        • 317 7.6.10.6 Выражение создания анонимного объекта
      • 319 7.6.11 Операция typeof
      • 322 7.6.12 Операции checked и unchecked
      • 325 7.6.13 Выражения значений по умолчанию
      • 325 7.6.14 Выражения анонимных методов
    • 325 7.7 Унарные операции
      • 326 7.7.1 Унарная операция плюс
      • 326 7.7.2 Унарная операция минус
      • 327 7.7.3 Логическая операция отрицания
      • 327 7.7.4 Операция поразрядного дополнения
      • 328 7.7.5 Префиксные инкрементные и декрементные операции
      • 329 7.7.6 Выражения приведения
    • 331 7.8 Арифметические операции
      • 331 7.8.1 Операция умножения
      • 333 7.8.2 Операция деления
      • 334 7.8.3 Операция взятия остатка от деления
      • 336 7.8.4 Операция сложения
      • 339 7.8.5 Операция вычитания
    • 341 7.9 Операции сдвига
    • 342 7.10 Операции отношения и операции проверки типа
      • 343 7.10.1 Операции сравнения для целочисленных типов
      • 344 7.10.2 Операции сравнения для типов с плавающей точкой
      • 346 7.10.3 Операции сравнения для десятичного типа
      • 346 7.10.4 Операции равенства для булевского типа
      • 346 7.10.5 Операции сравнения для перечислений
      • 347 7.10.6 Операции равенства для ссылочных типов
      • 349 7.10.7 Операции равенства для строкового типа
      • 349 7.10.8 Операции равенства для типов делегатов
      • 350 7.10.9 Операции равенства и константа null
      • 350 7.10.10 Операция is
      • 351 7.10.11 Операция as
    • 353 7.11 Логические операции
      • 353 7.11.1 Логические операции для целочисленных типов
      • 354 7.11.2 Логические операции для перечислений
      • 354 7.11.3 Булевские логические операции
      • 354 7.11.4 Обнуляемые булевские логические операции
    • 355 7.12 Условные логические операции
      • 356 7.12.1 Булевские условные логические операции
      • 356 7.12.2 Определенные пользователем условные логические операции
    • 357 7.13 Операция объединения с нулем
    • 359 7.14 Условная операция
    • 361 7.15 Выражения анонимных функций
      • 363 7.15.1 Сигнатуры анонимной функции
      • 364 7.15.2 Тело анонимной функции
      • 365 7.15.3 Разрешение перегрузки
      • 366 7.15.4 Анонимные функции и динамическое связывание
      • 366 7.15.5 Внешние переменные
        • 366 7.15.5.1 Захваченные внешние переменные
        • 367 7.15.5.2 Инстанцирование локальных переменных
      • 370 7.15.6 Вычисление выражений анонимных функций
    • 370 7.16 Выражения запроса
      • 372 7.16.1 Неоднозначность в выражениях запроса
      • 373 7.16.2 Преобразование выражений запроса
        • 374 7.16.2.1 Конструкции select и GroupBy с продолжениями
        • 375 7.16.2.2 Явно определенные типы переменных диапазона
        • 376 7.16.2.3 Вырожденные выражения запросов
        • 376 7.16.2.4 Конструкции from, let, where, join и orderby
        • 380 7.16.2.5 Конструкции select
        • 380 7.16.2.6 Конструкция GroupBy
        • 380 7.16.2.7 Прозрачные идентификаторы
      • 382 7.16.3 Паттерн выражения запроса
    • 384 7.17 Операции присваивания
      • 385 7.17.1 Простое присваивание
      • 388 7.17.2 Сложное присваивание
      • 389 7.17.3 Присваивание событий
    • 390 7.18 Выражения
    • 390 7.19 Константные выражения
    • 392 7.20 Булевские выражения
  • 393 Глава 8 Операторы
    • 393 8.1 Конечные точки и достижимость
    • 396 8.2 Блоки
      • 396 8.2.1 Списки операторов
    • 397 8.3 Пустой оператор
    • 399 8.4 Помеченные операторы
    • 400 8.5 Операторы объявления
      • 400 8.5.1 Объявление локальных переменных
      • 403 8.5.2 Объявление локальных констант
    • 404 8.6 Операторы-выражения
    • 405 8.7 Операторы выбора
      • 405 8.7.1 Оператор if
      • 406 8.7.2 Оператор switch
    • 411 8.8 Операторы цикла
      • 411 8.8.1 Оператор while
      • 412 8.8.2 Оператор do
      • 413 8.8.3 Оператор for
      • 414 8.8.4 Оператор foreach
    • 420 8.9 Операторы перехода
      • 421 8.9.1 Оператор break
      • 422 8.9.2 Оператор continue
      • 423 8.9.3 Оператор goto
      • 425 8.9.4 Оператор return
      • 425 8.9.5 Оператор throw
    • 427 8.10 Оператор try
    • 432 8.11 Операторы checked и unchecked
    • 432 8.12 Оператор lock
    • 434 8.13 Оператор using
    • 438 8.14 Оператор yield
  • 441 Глава 9 Пространства имен
    • 441 9.1 Единица компиляции
    • 442 9.2 Объявления пространств имен
    • 444 9.3 Внешние псевдонимы
    • 445 9.4 Директивы using
      • 445 9.4.1 Using-директива псевдонима
      • 448 9.4.2 Using-директива пространства имен
    • 450 9.5 Элементы пространства имен
    • 450 9.6 Объявление типов
    • 451 9.7 Спецификатор псевдонима пространства имен
      • 453 9.7.1 Уникальность псевдонимов
  • 454 Глава 10 Классы
    • 454 10.1 Объявления классов
      • 454 10.1.1 Модификаторы класса
        • 455 10.1.1.1 Абстрактные классы
        • 456 10.1.1.2 Бесплодные классы
        • 457 10.1.1.3 Статические классы
      • 458 10.1.2 Модификатор partial
      • 458 10.1.3 Параметры-типы
      • 459 10.1.4 Спецификация базового класса
        • 459 10.1.4.1 Базовые классы
        • 462 10.1.4.2 Реализации интерфейсов
      • 462 10.1.5 Ограничения на параметры-типы
      • 468 10.1.6 Тело класса
    • 468 10.2 Частичные типы
      • 469 10.2.1 Атрибуты
      • 470 10.2.2 Модификаторы
      • 470 10.2.3 Параметры-типы и ограничения
      • 471 10.2.4 Базовый класс
      • 471 10.2.5 Базовые интерфейсы
      • 472 10.2.6 Элементы
      • 473 10.2.7 Частичные методы
      • 477 10.2.8 Привязка имен
    • 478 10.3 Элементы класса
      • 479 10.3.1 Тип экземпляра
      • 480 10.3.2 Элементы сконструированных типов
      • 482 10.3.3 Наследование
      • 483 10.3.4 Модификатор new
      • 484 10.3.5 Модификаторы доступа
      • 484 10.3.6 Составляющие типы
      • 484 10.3.7 Статические элементы и элементы экземпляра
      • 486 10.3.8 Вложенные типы
        • 486 10.3.8.1 Полные имена
        • 486 10.3.8.2 Объявления вида доступа
        • 487 10.3.8.3 Скрытие
        • 488 10.3.8.4 this-доступ
        • 489 10.3.8.5 Доступ к закрытым и защищенным элементам охватывающего типа
        • 490 10.3.8.6 Вложенные типы в обобщенных классах
      • 491 10.3.9 Зарезервированные имена элементов
        • 492 10.3.9.1 Имена элементов, зарезервированные для свойств
        • 493 10.3.9.2 Имена элементов, зарезервированные для событий
        • 493 10.3.9.3 Имена элементов, зарезервированные для индексаторов
        • 493 10.3.9.4 Имена элементов, зарезервированные для деструкторов
    • 493 10.4 Константы
    • 496 10.5 Поля
      • 497 10.5.1 Статические поля и поля экземпляра
      • 498 10.5.2 Поля, доступные только для чтения
        • 499 10.5.2.1 Использование статических полей, доступных только для чтения, вместо констант
        • 500 10.5.2.2 Управление версиями констант и статических полей, доступных только для чтения
      • 501 10.5.3 Асинхронно-изменяемые поля
      • 503 10.5.4 Инициализация полей
      • 503 10.5.5 Инициализаторы переменных
        • 504 10.5.5.1 Инициализация статических полей
        • 506 10.5.5.2 Инициализация полей экземпляра
    • 506 10.6 Методы
      • 509 10.6.1 Параметры метода
        • 511 10.6.1.1 Параметры-значения
        • 511 10.6.1.2 Параметры-ссылки
        • 512 10.6.1.3 Выходные параметры
        • 514 10.6.1.4 Параметры-массивы
      • 517 10.6.2 Статические методы и методы экземпляра
      • 517 10.6.3 Виртуальные методы
      • 520 10.6.4 Переопределенные методы
      • 523 10.6.5 Бесплодные методы
      • 524 10.6.6 Абстрактные методы
      • 526 10.6.7 Внешние методы
      • 527 10.6.8 Частичные методы
      • 527 10.6.9 Методы расширения
      • 529 10.6.10 Тело метода
      • 530 10.6.11 Перегрузка методов
    • 530 10.7 Свойства
      • 531 10.7.1 Статические свойства и свойства экземпляра
      • 532 10.7.2 Коды доступа
      • 538 10.7.3 Автоматически реализуемые свойства
      • 540 10.7.4 Доступность
      • 541 10.7.5 Виртуальные, бесплодные, переопределенные и абстрактные коды доступа
    • 544 10.8 События
      • 546 10.8.1 События, подобные полям
      • 548 10.8.2 Коды доступа событий
      • 549 10.8.3 Статические события и события экземпляра
      • 550 10.8.4 Виртуальные, бесплодные, переопределенные и абстрактные коды доступа
    • 551 10.9 Индексаторы
      • 555 10.9.1 Перегрузка индексаторов
    • 555 10.10 Операции
      • 557 10.10.1 Унарные операции
      • 558 10.10.2 Бинарные операции
      • 559 10.10.3 Операции преобразования
    • 563 10.11 Конструкторы экземпляра
      • 564 10.11.1 Инициализаторы конструктора
      • 565 10.11.2 Инициализаторы переменных экземпляра
      • 565 10.11.3 Выполнение конструктора
      • 568 10.11.4 Конструкторы по умолчанию
      • 568 10.11.5 Закрытые конструкторы
      • 569 10.11.6 Необязательные параметры конструкторов экземпляра
    • 570 10.12 Статические конструкторы
    • 573 10.13 Деструкторы
    • 575 10.14 Итераторы
      • 575 10.14.1 Интерфейсы-перечислители
      • 576 10.14.2 Перечислимые интерфейсы
      • 576 10.14.3 Результирующий тип
      • 576 10.14.4 Объекты-перечислители
        • 577 10.14.4.1 Метод MoveNext
        • 579 10.14.4.2 Свойство Current
        • 579 10.14.4.3 Метод Dispose
      • 579 10.14.5 Перечислимые объекты
        • 580 10.14.5.1 Метод GetEnumerator
      • 580 10.14.6 Пример реализации
  • 589 Глава 11 Структуры
    • 590 11.1 Объявления структур
      • 590 11.1.1 Модификаторы структур
      • 591 11.1.2 Модификатор partial
      • 591 11.1.3 Интерфейсы структуры
      • 591 11.1.4 Тело структуры
    • 591 11.2 Элементы структуры
    • 592 11.3 Различия между классами и структурами
      • 592 11.3.1 Значимая семантика
      • 594 11.3.2 Наследование
      • 594 11.3.3 Присваивание
      • 595 11.3.4 Значения по умолчанию
      • 595 11.3.5 Упаковка и распаковка
      • 598 11.3.6 Значение this
      • 598 11.3.7 Инициализаторы полей
      • 599 11.3.8 Конструкторы
      • 600 11.3.9 Деструкторы
      • 600 11.3.10 Статические конструкторы
    • 601 11.4 Примеры структур
      • 601 11.4.1 Целочисленный тип для базы данных
      • 604 11.4.2 Тип boolean для базы данных
  • 607 Глава 12 Массивы
    • 607 12.1 Типы массивов
      • 608 12.1.1 Тип System.Array
      • 608 12.1.2 Массивы и обобщенный интерфейс IList
    • 610 12.2 Создание массива
    • 610 12.3 Доступ к элементам массива
    • 610 12.4 Элементы типа массива
    • 610 12.5 Ковариантность массивов
    • 612 12.6 Инициализаторы массива
  • 614 Глава 13 Интерфейсы
    • 614 13.1 Объявления интерфейсов
      • 615 13.1.1 Модификаторы интерфейса
      • 615 13.1.2 Модификатор partial
      • 616 13.1.3 Списки параметров вариантного типа
        • 616 13.1.3.1 Безопасность вариантности
        • 617 13.1.3.2 Преобразование вариантности
      • 618 13.1.4 Базовые интерфейсы
      • 619 13.1.5 Тело интерфейса
    • 620 13.2 Элементы интерфейса
      • 621 13.2.1 Методы интерфейса
      • 622 13.2.2 Свойства интерфейса
      • 622 13.2.3 События интерфейса
      • 623 13.2.4 Индексаторы интерфейса
      • 623 13.2.5 Доступ к элементам интерфейса
    • 625 13.3 Полные имена элементов интерфейса
    • 626 13.4 Реализации интерфейсов
      • 628 13.4.1 Явные реализации элементов интерфейса
      • 631 13.4.2 Уникальность реализованных интерфейсов
      • 632 13.4.3 Реализация обобщенных методов
      • 633 13.4.4 Сопоставление интерфейсов
      • 637 13.4.5 Наследование реализаций интерфейсов
      • 638 13.4.6 Повторная реализация интерфейса
      • 640 13.4.7 Абстрактные классы и интерфейсы
  • 642 Глава 14 Перечисления
    • 642 14.1 Объявление перечисления
    • 643 14.2 Модификаторы перечисления
    • 644 14.3 Элементы перечисления
    • 646 14.4 Тип System.Enum
    • 647 14.5 Значения перечислений и операции
  • 648 Глава 15 Делегаты
    • 649 15.1 Объявления делегатов
    • 652 15.2 Совместимость делегатов
    • 652 15.3 Создание экземпляра делегата
    • 653 15.4 Вызов делегата
  • 657 Глава 16 Исключения
    • 658 16.1 Причины исключений
    • 659 16.2 Класс System.Exception
    • 659 16.3 Как обрабатываются исключения
    • 661 16.4 Распространенные классы исключений
  • 663 Глава 17 Атрибуты
    • 664 17.1 Классы атрибутов
      • 664 17.1.1 Использование атрибутов
      • 666 17.1.2 Позиционные и именованные параметры
      • 667 17.1.3 Типы параметров атрибута
    • 667 17.2 Спецификация атрибута
    • 674 17.3 Экземпляры атрибутов
      • 674 17.3.1 Компиляция атрибута
      • 674 17.3.2 Получение экземпляра атрибута во время выполнения
    • 675 17.4 Зарезервированные атрибуты
      • 675 17.4.1 Атрибут AttributeUsage
      • 676 17.4.2 Атрибут Conditional
        • 676 17.4.2.1 Условные методы
        • 679 17.4.2.2 Классы условных атрибутов
      • 680 17.4.3 Атрибут Obsolete
    • 682 17.5 Атрибуты для взаимодействия
      • 682 17.5.1 Взаимодействие с компонентами COM и Win32
      • 682 17.5.2 Взаимодействие с другими языками .NET
        • 682 17.5.2.1 Атрибут IndexerName
  • 683 Глава 18 Небезопасный код
    • 684 18.1 Небезопасные контексты
    • 686 18.2 Типы указателей
    • 690 18.3 Фиксированные и перемещаемые переменные
    • 690 18.4 Преобразования указателей
      • 692 18.4.1 Массивы указателей
    • 693 18.5 Использование указателей в выражениях
      • 694 18.5.1 Разыменование указателей
      • 694 18.5.2 Доступ к элементу объекта через указатель
      • 696 18.5.3 Доступ к элементу через указатель
      • 696 18.5.4 Операция получения адреса
      • 698 18.5.5 Инкремент и декремент указателей
      • 698 18.5.6 Арифметика указателей
      • 699 18.5.7 Сравнение указателей
      • 699 18.5.8 Операция sizeof
    • 700 18.6 Оператор fixed
    • 705 18.7 Буферы фиксированного размера
      • 706 18.7.1 Объявления буферов фиксированного размера
      • 707 18.7.2 Использование буферов фиксированного размера в выражениях
      • 708 18.7.3 Проверка явного присваивания
    • 709 18.8 Выделение памяти в стеке
    • 710 18.9 Динамическое выделение памяти
  • 713 Приложение А Документирующие комментарии
    • 713 А.1 Введение
    • 715 А.2 Рекомендуемые теги
      • 715 А.2.1 <c>
      • 716 A.2.2 <code>
      • 716 A.2.3 <example>
      • 716 A.2.4 <exception>
      • 717 A.2.5 <include>
      • 718 A.2.6 <list>
      • 719 A.2.7 <para>
      • 719 A.2.8 <param>
      • 720 A.2.9 <paramref>
      • 720 A.2.10 <permission>
      • 721 A.2.11 <remark>
      • 721 A.2.12 <returns>
      • 721 A.2.13 <see>
      • 722 A.2.14 <seealso>
      • 722 A.2.15 <summary>
      • 723 A.2.16 <value>
      • 723 A.2.17 <typeparam>
      • 723 A.2.18 <typeparamref>
    • 724 A.3 Обработка файла документации
      • 724 A.3.1 Формат ID-строки
      • 725 A.3.2 Примеры ID-строк
    • 729 A.4 Пример
      • 729 A.4.1 Исходный код на C#
      • 732 A.4.2 Результирующий XML
  • 736 Приложение Б Грамматика
    • 736 Б.1 Лексическая грамматика
      • 736 Б.1.1 Символы конца строки
      • 736 Б.1.2 Комментарии
      • 737 Б.1.3 Пробельные символы
      • 737 Б.1.4 Лексемы
      • 738 Б.1.5 Управляющие последовательности Unicode
      • 738 Б.1.6 Идентификаторы
      • 739 Б.1.7 Ключевые слова
      • 739 Б.1.8 Литералы
      • 741 Б.1.9 Знаки операций и пунктуации
      • 741 Б.1.10 Директивы препроцессора
    • 744 Б.2 Синтаксическая грамматика
      • 744 Б.2.1 Основные понятия
      • 744 Б.2.2 Типы
      • 746 Б.2.3 Переменные
      • 746 Б.2.4 Выражения
      • 753 Б.2.5 Операторы
      • 757 Б.2.6 Пространства имен
      • 758 Б.2.7 Классы
      • 765 Б.2.8 Структуры
      • 766 Б.2.9 Массивы
      • 766 Б.2.10 Интерфейсы
      • 767 Б.2.11 Перечисления
      • 768 Б.2.12 Делегаты
      • 768 Б.2.13 Атрибуты
    • 770 Б.3 Расширения грамматики для небезопасного кода
  • 773 Приложение В Ссылки

Инструкция как скачать книгу А. Хейлсберг, М. Торгерсен, С. Вилтамут, П. Голд: Язык программирования C#. Классика Computers Science в форматах DjVu, PDF, DOC или fb2 совершенно бесплатно.
Язык программирования C#. Классика Computers Science
Рейтинг книги:
7 голосов
976

Поиск книг:




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

Статистика: