Главная страница

Справочник по C# Герберт Шилдт ббк 32. 973. 26018 75 Ш57 удк 681 07 Издательский дом "Вильямс" Зав редакцией


Скачать 5.05 Mb.
НазваниеСправочник по C# Герберт Шилдт ббк 32. 973. 26018 75 Ш57 удк 681 07 Издательский дом "Вильямс" Зав редакцией
АнкорC #.pdf
Дата08.12.2017
Размер5.05 Mb.
Формат файлаpdf
Имя файлаC #.pdf
ТипСправочник
#10795
страница1 из 52
  1   2   3   4   5   6   7   8   9   ...   52

Автор бестселлеров по программированию:
продано более 3 миллионов его книг!
“Герберт Шилдт
написал книгу,
которую должен
иметь каждый, кто
программирует
на C#.”
-Прашант Шридхаран,
управляющий выпуском
C# продуктов, Microsoft
БЕ
СП
ЛА
ТН
ЫЙ
В
INT
ER
NE
T
Osborne
Mc
Graw
Hill


Полный
справочник по
C#
Герберт Шилдт

ББК 32.973.26-018.2.75
Ш57
УДК 681.3.07
Издательский дом “Вильямс”
Зав. редакцией С.Н. Тригуб
Перевод с английского и редакция Н.М. Ручко
По общим вопросам обращайтесь в Издательский дом “Вильямс” по адресу: info@williamspublishing.com, http://www.williamspublishing.com
Шилдт, Герберт.
Ш57 полный справочник по C#. : Пер. с англ. — М. : Издательский дом “Вильямс”, 2004.
— 752 с. : ил. — Парал. тит. англ.
ISBN 5-8459-0563-Х (рус.)
В этом полном справочнике по C# — новому языку программирования, разработанному специально для среды .NET, — описаны все основные аспекты языка: типы данных, операторы, управляющие инструкции, классы, интерфейсы, делегаты, индексаторы, события, указатели и директивы препроцессора. Подробно описаны возможности основных библиотек классов C#.
Автор справочника — общепризнанный авторитет в области программирования на языках C и C++, Java и C# — включил в книгу полезные советы и сотни примеров с комментариями, которые удовлетворят как начинающих программистов, так и опытных специалистов. Этот справочник обязан иметь под рукой каждый, кто программирует на C#.
ББК 32.973.26-018.2.75
Все названия программных продуктов являются зарегистрированными торговыми марками соответствующих фирм.
Никакая часть настоящего издания ни в каких целях не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами, будь то электронные или механические, включая фотокопирование и запись на магнитный носитель, если на это нет письменного разрешения издательства Osborne Publishing.
Authorized translation from the English language edition published by McGraw-Hill
Companies, Copyright © 2003
All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from the Publisher.
Russian language edition published by Williams Publishing House according to the
Agreement with R&I Enterprises International, Copyright © 2004
ISBN 5-8459-0563-Х (рус.)
ISBN 0-07-213485-2 (англ.)
© Издательский дом “Вильямс”, 2004
© by The McGraw-Hill Companies, 2003

Оглавление
Введение
18
Часть I. Язык C#
21
Глава 1. Создание языка C#
22
Глава 2. Обзор элементов языка C#
30
Глава 3. Типы данных, литералы и переменные 53
Глава 4. Операторы 80
Глава 5. Инструкции управления 102
Глава 6. Введение в классы, объекты и методы 126
Глава 7. Массивы и строки 154
Глава 8. Подробнее о методах и классах 179
Глава 9. Перегрузка операторов 224
Глава 10. Индексаторы и свойства 256
Глава 11. Наследование 277
Глава 12. Интерфейсы, структуры и перечисления 319
Глава 13. Обработка исключительных ситуаций 349
Глава 14. Использование средств ввода-вывода 375
Глава 15. Делегаты и события 409
Глава 16. Пространства имен, препроцессор и компоновочные файлы 431
Глава 17. Динамическая идентификация типов, отражение и атрибуты 449
Глава 18. Опасный код, указатели и другие темы 484
Часть II. Библиотека C#
501
Глава 19. Пространство имен System
502
Глава 20. Строки и форматирование 541
Глава 21. Многопоточное программирование 575
Глава 22. Работа с коллекциями 610
Глава 23. Сетевые возможности и использование Internet
645
Часть III. Применение языка C#
669
Глава 24. Создание компонентов 670
Глава 25. Создание Windows-приложений 689
Глава 26. Синтаксический анализ методом рекурсивного спуска 707
Часть IV. Приложения 731
Приложение А. Краткий обзор языка комментариев XML
732
Приложение Б. C# и робототехника 737
Предметный указатель 740

6
Содержание
Содержание
Об авторе
17
Введение
18
Часть I. Язык C#
21
Глава 1. Создание языка C#
22
Генеалогическое дерево C#
23
Язык C, или начало современной эпохи программирования 23
Создание ООП и C++
24
Internet и появление языка Java
25
Создание C#
26
Связь C# с оболочкой .NET Framework
27
О среде .NET Framework
27
Функционирование системы CLR
28
Сравнение управляемого кода с неуправляемым 28
Спецификация универсального языка 29
Глава 2. Обзор элементов языка C#
30
Объектно-ориентированное программирование 31
Инкапсуляция 32
Полиморфизм 32
Наследование 33
Первая простая программа 33
Использование компилятора командной строки csc.exe
34
Ввод текста программы 34
Компилирование программы 34
Выполнение программы 35
Использование Visual Studio IDE
35
“Разбор полетов”, или первый пример программы “под микроскопом” 38
Обработка синтаксических ошибок 40
Небольшая вариация на тему первой программы 41
Вторая простая программа 42
Другие типы данных 44
Первое знакомство с инструкциями управления 45
Инструкция if
45
Цикл for
47
Использование блоков кода 48
Использование точки с запятой и оформление текста программы 50
Использование отступов 50
Ключевые слова C#
51
Идентификаторы 51
Библиотеки классов C#
52
Глава 3. Типы данных, литералы и переменные 53
О важности типов данных 54
Типы значений в C#
54
Целочисленные типы 55
Типы для представления чисел с плавающей точкой 57
Тип decimal
58
Символы
60

Содержание
7
Тип bool
61
О некоторых вариантах вывода данных 62
Литералы
65
Шестнадцатеричные литералы 65
Управляющие последовательности символов 66
Строковые литералы 66
Рассмотрим переменные поближе 68
Инициализация переменной 68
Динамическая инициализация 69
Область видимости и время существования переменных 70
Преобразование и приведение типов 72
Автоматическое преобразование типов 73
Приведение несовместимых типов 74
Преобразование типов в выражениях 76
Приведение типов в выражениях 78
Глава 4. Операторы 80
Арифметические операторы 81
Инкремент и декремент 82
Операторы отношений и логические операторы 84
Сокращенные логические операторы 87
Оператор присваивания 89
Составные операторы присваивания 89
Поразрядные операторы 90
Поразрядные операторы И, ИЛИ, исключающее ИЛИ и НЕ 90
Операторы сдвига 96
Поразрядные составные операторы присваивания 99
Оператор ?
99
Использование пробелов и круглых скобок 101
Приоритет операторов 101
Глава 5. Инструкции управления 102
Инструкция if
103
Вложенные if-инструкции 104
Конструкция if-else-if
105
Инструкция switch
106
Вложенные инструкции switch
110
Цикл for
110
Вариации на тему цикла for
112
Использование нескольких управляющих переменных цикла 112
Условное выражение 114
Отсутствие элементов в определении цикла 115
Бесконечный цикл 116
Циклы без тела 116
Объявление управляющей переменной в цикле for
117
Цикл while
117
Цикл do-while
119
Цикл foreach
120
Использование инструкции break для выхода из цикла 120
Использование инструкции continue
122
Инструкция return
123
Инструкция goto
123
Глава 6. Введение в классы, объекты и методы 126
Введение в классы 127
Общая форма определения класса 127

8
Содержание
Определение класса 128
Создание объектов 132
Переменные ссылочного типа и присвоение им значений 133
Методы
134
Добавление методов в класс Building
134
Возвращение из метода 137
Возврат значения 138
Использование параметров 140
Добавление параметризованного метода в класс Building
142
Как избежать написания недостижимого кода 144
Конструкторы 144
Параметризованные конструкторы 146
Добавление конструктора в класс Building
146
Использование оператора new
147
Применение оператора new к переменным типа значений 148
Сбор “мусора” и использование деструкторов 149
Деструкторы 149
Ключевое слово this
151
Глава 7. Массивы и строки 154
Массивы
155
Одномерные массивы 155
Инициализация массива 157
Соблюдение “пограничного режима” 158
Многомерные массивы 159
Двумерные массивы 159
Массивы трех и более измерений 160
Инициализация многомерных массивов 161
Рваные массивы 162
Присвоение значений ссылочным переменным массивов 164
Использование свойства Length
165
Использование свойства Length при работе с рваными массивами 167
Цикл foreach
168
Строки
172
Создание строк 172
Работа со строками 173
Массивы строк 175
Постоянство строк 177
Использование строк в switch-инструкциях 178
Глава 8. Подробнее о методах и классах 179
Управление доступом к членам класса 180
Спецификаторы доступа C#
180
Применение спецификаторов доступа public и private
182
Управление доступом: учебный проект 182
Передача объектов методам 187
Как происходит передача аргументов 189
Использование ref- и out-параметров 191
Использование модификатора ref
191
Использование модификатора out
193
Использование модификаторов ref и out для ссылочных параметров 195
Использование переменного количества аргументов 197
Возвращение методами объектов 199

Содержание
9
Возвращение методами массивов 202
Перегрузка методов 203
Перегрузка конструкторов 208
Вызов перегруженного конструктора с помощью ссылки this
212
Метод Main()
213
Возвращение значений из метода Main()
213
Передача аргументов методу Main()
213
Рекурсия
215
Использование модификатора типа static
218
Статические конструкторы 223
Глава 9. Перегрузка операторов 224
Основы перегрузки операторов 225
Перегрузка бинарных операторов 226
Перегрузка унарных операторов 228
Выполнение операций над значениями встроенных C#-типов 232
Перегрузка операторов отношений 236
Перегрузка операторов true и false
237
Перегрузка логических операторов 240
Простой случай перегрузки логических операторов 240
Включение операторов, действующих по сокращенной схеме вычислений 242
Операторы преобразования 246
Рекомендации и ограничения по созданию перегруженных операторов 250
Еще один пример перегрузки операторов 251
Глава 10. Индексаторы и свойства 256
Индексаторы 257
Создание одномерных индексаторов 257
Перегрузка индексаторов 260
Индексаторам не требуется базовый массив 263
Многомерные индексаторы 264
Свойства
266
Правила использования свойств 271
Использование индексаторов и свойств 271
Глава 11. Наследование 277
Основы наследования 278
Доступ к членам класса и наследование 281
Использование защищенного доступа 283
Конструкторы и наследование 285
Вызов конструкторов базового класса 286
Наследование и сокрытие имен 290
Использование ключевого слова base для доступа к скрытому имени 291
Создание многоуровневой иерархии 293
Последовательность вызова конструкторов 296
Ссылки на базовый класс и объекты производных классов 297
Виртуальные методы и их переопределение 301
Зачем переопределять методы 305
Применение виртуальных методов 305
Использование абстрактных классов 309
Использование ключевого слова sealed для предотвращения наследования 313
Класс object
313
Приведение к объектному типу и восстановление значения 315
Использование класса object в качестве обобщенного типа данных 317

10
Содержание
Глава 12. Интерфейсы, структуры и перечисления 319
Интерфейсы 320
Реализация интерфейсов 321
Использование интерфейсных ссылок 325
Интерфейсные свойства 327
Интерфейсные индексаторы 328
Наследование интерфейсов 330
Сокрытие имен с помощью наследования интерфейсов 331
Явная реализация членов интерфейса 331
Закрытая реализация 332
Как избежать неопределенности с помощью явной реализации 333
Выбор между интерфейсом и абстрактным классом 334
Стандартные интерфейсы среды .NET Framework
334
Учебный проект: создание интерфейса 335
Структуры 340
Зачем нужны структуры 343
Перечисления 345
Инициализация перечислений 347
Задание базового типа перечисления 347
Использование перечислений 347
Глава 13. Обработка исключительных ситуаций 349
Класс System.Exception
350
Основы обработки исключений 350
Использование try- и catch-блоков 351
Пример обработки исключения 351
Второй пример исключения 353
Последствия возникновения неперехватываемых исключений 354
Возможность красиво выходить из ошибочных ситуаций 356
Использование нескольких catch-инструкций 357
Перехват всех исключений 358
Вложение try-блоков 358
Генерирование исключений вручную 360
Повторное генерирование исключений 360
Использование блока finally
362
Исключения “под микроскопом” 363
Наиболее употребительные исключения 365
Наследование классов исключений 367
Перехват исключений производных классов 370
Использование ключевых слов checked и unchecked
372
Глава 14. Использование средств ввода-вывода 375
Организация C#-системы ввода-вывода 376
Байтовые и символьные потоки 376
Встроенные потоки 376
Классы потоков 377
Класс Stream
377
Байтовые классы потоков 378
Символьные классы потоков 378
Двоичные потоки 380
Консольный ввод-вывод данных 380
Считывание данных из консольного входного потока 380
Запись данных в консольный выходной поток 382
Класс FileStream и файловый ввод-вывод на побайтовой основе 383

Содержание
11
Как открыть и закрыть файл 383
Считывание байтов из объекта класса FileStream
385
Запись данных в файл 386
Использование класса FileStream для копирования файла 387
Файловый ввод-вывод с ориентацией на символы 389
Использование класса StreamWriter
389
Использование класса Stream Reader
391
Перенаправление стандартных потоков 392
Считывание и запись двоичных данных 394
Класс BinaryWriter
394
Класс BinaryReader
395
Демонстрация использования двоичного ввода-вывода 396
Файлы с произвольным доступом 400
Использование класса MemoryStream
402
Использование классов StringReader и StringWriter
404
Преобразование числовых строк во внутреннее представление 405
Глава 15. Делегаты и события 409
Делегаты
410
Многоадресная передача 413
Класс System. Delegate
415
Назначение делегатов 416
События
416
Пример события для многоадресной передачи 418
Сравнение методов экземпляров классов со статическими методами, используемыми в качестве обработчиков событий 419
Использование событийных средств доступа 421
Смешанные средства обработки событий 425
Рекомендации по обработке событий в среде .NET Framework
426
Использование встроенного делегата EventHandler
428
Учебный проект: использование событий 429
Глава 16. Пространства имен, препроцессор и компоновочные файлы 431
Пространства имен 432
Объявление пространства имен 432
Пространства имен предотвращают конфликты по совпадению имен 434
Ключевое слово using
436
Вторая форма использования директивы using
437
Аддитивность пространств имен 438
Пространства имен могут быть вложенными 440
Пространство имен по умолчанию 441
Препроцессор 441
#define
442
#if и #endif
442
#else и #elif
444
#undef
445
#error
446
#warning 446
#line
446
#region и #endregion
447
Компоновочные файлы и модификатор доступа internal
447
Модификатор доступа internal
447
Глава 17. Динамическая идентификация типов, отражение и атрибуты 449
Динамическая идентификация типов 450
Проверка типа с помощью ключевого слова is
450

12
Содержание
Использование оператора as
451
Использование оператора typeof
453
Отражение 454
Ядро подсистемы отображения: класс System.Type
454
Использование отражения 455
Получение информации о методах 455
Второй формат вызова метода GetMethods()
458
Вызов методов с помощью средства отражения 459
Получение конструкторов типа 462
Получение типов из компоновочных файлов 466
Полная автоматизация получения информации о типах 471
Атрибуты
474
Основы применения атрибутов 474
Создание атрибута 474
Присоединение атрибута 475
Получение атрибутов объекта 475
Сравнение позиционных и именованных параметров 477
Использование встроенных атрибутов 480
Атрибут Attribute Usage
480
Атрибут Conditional
481
Атрибут Obsolete
482
Глава 18. Опасный код, указатели и другие темы 484
Опасный код 485
Основы использования указателей 486
Объявление указателя 486
Операторы “*” и “&”
487
Использование ключевого слова unsafe
487
Использование модификатора fixed
488
Доступ к членам структур с помощью указателей 489
Арифметические операции над указателями 489
Сравнение указателей 491
Указатели и массивы 492
Индексация указателя 492
Указатели и строки 494
Использование многоуровневой непрямой адресации 494
Массивы указателей 495
Ключевые слова смешанного типа 496 sizeof
496 lock
496 readonly 496 stackalloc 497
Инструкция using
498
Модификаторы const и volatile
499
Часть II. Библиотека C#
501
  1   2   3   4   5   6   7   8   9   ...   52


написать администратору сайта