УДК 004.438C#
ББК 32.973.26-018.1
Р58
Р58
Робисон У.
С# без лишних слов: Пер. с англ. – М.: ДМК Пресс. – 352 с.: ил. (Серия
«Для программистов»).
ISBN 5-94074-177-0
Язык программирования C# – одна из важнейших составных частей
платформы .NET, разработанной компанией Microsoft. В предлагаемом издании
содержится ясное, полное и лаконичное описание языка. На первый
взгляд кажется, что C# похож на C++ и Java, но в данной книге говорится
и о существенных различиях между ними. Приводится также полная грамматика
языка, рассказывается о наиболее часто употребляемых классах из
библиотеки классов (BCL).
Самая интересная часть книги – это рассказ о различных приемах программирования,
проиллюстрированный большим числом примеров, которые
вы сможете с успехом применить в собственных программах. Основное
внимание уделяется вопросам синтаксиса и построения программ, представляющим
интерес для практикующих программистов.
Authorized translation from the English language edition, entitled PURE C#, 1st edition by
ROBISON, WILLIAM, published by Pearson Education, Inc., publishing as Sams, Copyright @
2002 by Sams Publishing.
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 Pearson Education, Inc.
Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы
то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев
авторских прав.
Материал, изложенный в данной книге, многократно проверен. Но, поскольку вероятность
технических ошибок все равно существует, издательство не может гарантировать абсолютную
точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности
за возможные ошибки, связанные с использованием книги.
ISBN 0-672-32266-8 (англ.)
ISBN 5-94074-177-0 (рус.)
Copyright © by Sams Publishing
© Перевод на русский язык, оформление
ДМК Пресс
Стр.5
Содержание
Введение ............................................................................................ 14
ЧАСТЬ I. Основы языка C# ........................................................ 15
Глава 1. Элементы языка ............................................................... 16
Структура программы ....................................................................... 16
Типы и объявления ............................................................................ 18
Встроенные значащие типы ............................................................... 18
Типы классов ................................................................................... 23
Тип интерфейса ................................................................................. 33
Поток управления .............................................................................. 36
Нормальное выполнение ................................................................... 36
Делегирование .................................................................................. 40
Исключения ..................................................................................... 42
Наследование .................................................................................... 49
Небезопасный код ............................................................................. 53
Вызов внешних функций .................................................................... 53
Написание небезопасного кода .......................................................... 54
Директивы препроцессора .............................................................. 56
Резюме ............................................................................................... 58
Глава 2. Работа с приложениями ................................................ 60
Промежуточный язык и единая среда исполнения ........................ 60
Промежуточный язык ........................................................................ 60
Единая среда исполнения .................................................................. 61
Исполняемые файлы, сборки и компоненты .................................. 62
Сборки ............................................................................................ 62
Процедура объединения .................................................................... 63
Компоненты ..................................................................................... 64
Атрибуты компонентов и сборок ...................................................... 65
Средства разработки ........................................................................ 68
Компилятор csc ................................................................................ 68
Управление компиляцией с помощью программы nmake ........................ 71
Стр.6
C# без лишних слов
Построение сборок с помощью программ sn и al ................................... 75
Управление сборками с помощью программы gacutil ............................. 79
Отладка на платформе .NET ............................................................. 80
Отладка с помощью программы DbgCLR .............................................. 81
Структура откомпилированной сборки ................................................. 84
Резюме ............................................................................................... 86
Глава 3. Библиотека базовых классов ...................................... 87
Архитектура и профили ..................................................................... 87
Строки и регулярные выражения ..................................................... 88
Контейнеры ........................................................................................ 92
Сериализация .................................................................................... 96
Ввод и вывод ...................................................................................... 98
Сетевые коммуникации .................................................................. 102
Сокеты .......................................................................................... 103
Коммуникация с помощью сокетов .................................................... 104
Вспомогательные классы для сетевого программирования .................. 108
Резюме ............................................................................................. 111
Глава 4. Переменные и типы ....................................................... 112
Простые типы данных ..................................................................... 112
Создание и использование .............................................................. 112
Строки и их преобразования ............................................................ 113
Преобразование и приведение типов ................................................ 118
Классы .............................................................................................. 120
Интерфейсы ..................................................................................... 123
Структуры ......................................................................................... 125
Перечислимые типы ........................................................................ 126
Резюме ............................................................................................. 127
ЧАСТЬ II. Техника программирования .............................. 129
Глава 5. Классы и компоненты .................................................. 130
Определение сущностей и классов ............................................... 130
Методы ............................................................................................. 132
Свойства ........................................................................................... 136
Стр.7
Содержание
Пространства имен ......................................................................... 143
Резюме ............................................................................................. 145
Глава 6. Управление памятью и C# .......................................... 146
Управление памятью в каркасе .NET Framework .......................... 146
Интерфейс IDisposable .................................................................... 148
Чистильщики .................................................................................. 152
Слабые ссылки ............................................................................... 156
Использование памяти в C# ........................................................... 158
Предложения fixed и using ................................................................ 158
Эффективное управление памятью ................................................... 159
Резюме ............................................................................................. 160
Глава 7. Управление потоком выполнения программы ..... 161
Потоки .............................................................................................. 161
Синхронизация ................................................................................ 165
Делегаты .......................................................................................... 170
События ............................................................................................ 174
Резюме ............................................................................................. 177
Глава 8. Небезопасный код ......................................................... 178
Указатели ......................................................................................... 178
Сложности при работе с указателями ................................................ 178
Решение ........................................................................................ 179
Память и вызов функций платформенного API .................................... 180
Небезопасные контексты ............................................................... 183
Небезопасные конструкции языка ................................................. 184
Управление памятью в небезопасном коде .................................. 187
Резюме ............................................................................................. 189
Глава 9. Метаданные и отражение ........................................... 190
Использование атрибутов .............................................................. 190
Создание нестандартных атрибутов ............................................. 193
Отражение и динамическое связывание ...................................... 196
Отражение и статически связанные элементы .................................... 196
Динамическая загрузка и связывание ................................................ 197
Резюме ............................................................................................. 204
Стр.8
C# без лишних слов
Глава 10. Конфигурирование компонентов
и приложений ................................................................................... 205
Конфигурирование сборок ............................................................. 205
Уровни конфигурирования ............................................................... 205
Манипулирование конфигурационными файлами ............................... 206
Управление ресурсами ................................................................... 209
Ресурсы, не зависящие от региона .................................................... 210
Ресурсы, зависящие от региона ........................................................ 212
Резюме ............................................................................................. 216
Глава 11. Использование SDK .................................................... 217
Компиляция и компоновка .............................................................. 217
Основные этапы компиляции ............................................................ 217
Интеграция с COM+ ........................................................................ 222
Отладка и инспекция ....................................................................... 227
Развертывание созданного решения ............................................ 228
Резюме ............................................................................................. 230
Часть III. Справочное руководство .................................... 231
Приложение A. Грамматика языка C# .................................... 232
Структурные элементы ................................................................... 232
Функциональные элементы ............................................................ 245
Приложение B. Краткий справочник
по основным типам ........................................................................ 270
Класс ApplicationException .............................................................. 270
Класс ArgumentOutOfRangeException ............................................ 270
Класс ArithmeticException ............................................................... 271
Класс Array ....................................................................................... 271
Класс Attribute .................................................................................. 274
Перечисление AttributeTargets ....................................................... 276
Класс AttributeUsageAttribute .......................................................... 277
Класс BitConverter ........................................................................... 277
Структура Boolean ........................................................................... 278
Структура Byte ................................................................................. 279
Структура Char ................................................................................. 280
Стр.9
Содержание
Класс Console .................................................................................. 282
Класс Convert ................................................................................... 283
Структура DateTime ......................................................................... 285
Перечисление DayOfWeek .............................................................. 290
Класс DBNull .................................................................................... 291
Структура Decimal ........................................................................... 291
Класс Delegate ................................................................................. 295
Структура Double ............................................................................. 297
Класс Environment ........................................................................... 298
Перечисление Environment.SpecialFolder ..................................... 300
Класс EventArgs ............................................................................... 301
Делегат EventHandler ...................................................................... 301
Класс Exception ................................................................................ 301
Класс FlagsAttribute ......................................................................... 302
Класс GC ........................................................................................... 302
Интерфейс IComparable .................................................................. 303
Структура Int16 ................................................................................ 303
Структура Int32 ................................................................................ 304
Структура Int64 ................................................................................ 306
Класс MarshalByRefObject .............................................................. 307
Класс Math ....................................................................................... 307
Класс MulticastDelegate .................................................................. 310
Класс NonSerializedAttribute ........................................................... 311
Класс Object ..................................................................................... 311
Класс ObsoleteAttribute ................................................................... 312
Класс OperatingSystem .................................................................... 312
Класс Random .................................................................................. 313
Структура SByte ............................................................................... 313
Класс SerializableAttribute ............................................................... 315
Структура Single .............................................................................. 315
Класс String ...................................................................................... 316
Класс ThreadStaticAttribute ............................................................. 322
Структура TimeSpan ........................................................................ 323
Класс TimeZone ................................................................................ 326
Перечисление TypeCode ................................................................. 327
Структура UInt16 .............................................................................. 327
Стр.10
10
C# без лишних слов
Структура UInt32 .............................................................................. 328
Структура UInt64 .............................................................................. 329
Класс Uri ........................................................................................... 331
Класс UriBuilder ................................................................................ 334
Перечисление UriHostNameType .................................................... 335
Перечисление UriPartial .................................................................. 335
Класс Version .................................................................................... 336
Предметный указатель ................................................................ 337
Стр.11