Эндрю Троелсен
ЯЗЫК ПРОГРАММИРОВАНИЯ C# 2005 И ПЛАТФОРМА .NET 2.0 3-е издание
Посвящаю эту книгу моей матери, Мэри Троелсен. Мама! Благодарю тебя за поддержку в прошлом, настоящем и будущем. Ах, да! И спасибо за то, что ты не стала наказывать меня, когда я пришел домой с "ирокезом".
Люблю тебя. Пух.
Об авторе
Эндрю Троелсен (Andrew Troelsen) носит титул MVP (Most Valuable Professional – "самый ценный специалист") по Visual C# в Microsoft, а также является партнером, преподавателем и консультантом Intertech Training (http://www.IntertechTraining.com), центра обучения разработчиков .NET и J2EE. Он является автором множества книг, среди которых Developer's Workshop to COM and ATL 3.0 (Wordware Publishing, 2000), COM and .NET Interoperability (Apress, 2002), Visual Basic .NET and the .NET Platform: An Advanced Guide (Apress, 2001), а также книга C# and the .NET Platform (Apress, 2003), которая была удостоена ряда специальных наград. Кроме того, он является автором множества статей по вопросам .NET для MSDN online и MacTech (в этих статьях рассматриваются различные аспекты межплатформенной независимости .NET) и часто выступает с докладами, посвященными .NET, в конференциях и группах пользователей.
В настоящее время Эндрю Троелсен проживает в Миннеаполисе, шт. Миннесота, со своей женой Амандой. В свободное время он мечтает о том, что Wild выиграют Кубок Стэнли, Vikings выиграют Суперкубок (он бы хотел, чтобы это произошло до его пенсии), a Timberwolves станут многократными чемпионами NBA.
О научном редакторе
Гэвин Смит (Gavin Smyth) является профессионалом в области программного обеспечения с многолетним (и, как он считает, слишком большим) опытом разработки программ – от драйверов различных устройств до приложений, предназначенных для многоузловых серверов на таких разных платформах, как "несгибаемые" операционные системы реального времени Unix и Windows, и таких языках программирования, как ассемблер, C++, Ada и C# (не считая множества других, не менее достойных языков). Он выполнял заказы для таких компаний, как ВТ и Nortel, а в настоящее время работает для Microsoft. Гэвин Смит имеет ряд собственных печатных работ, вышедших в научных издательствах (EXE и Wrox – где они сейчас?), но в какой-то момент он пришел к заключению, что критика чужих публикаций оказывается куда более плодотворной. Помимо этого, когда он не борется в своем саду с сорняками и насекомыми, он пытается заставить роботов LEGO делать то, что они, по его мнению, должны делать (это все исключительно ради детей – честно!).
Благодарности
Выпуск третьего издания этой книги был бы просто невозможен без поддержки и помощи многих окружающих меня людей, Во-первых, следует выразить благодарность всей команде издательства Apress. Каждый из ее членов приложил немало усилий, чтобы превратить мою "сырую" рукопись в безупречный продукт. Далее, я должен выразить признательность моему научному редактору, Гэвину Смиту (известному также под псевдонимом Eagle Eye – Орлиный Глаз), который выполнил огромную работу, чтобы уберечь меня от множества ошибок. Все оставшиеся ошибки (опечатки, неточности в программном коде и т.д.), которые смогли "пробраться" в эту книгу, конечно же, лежат на моей совести.
Спасибо моим друзьям и членам моей семьи, которые (в очередной раз) терпели мои цейтноты, а иногда и связанную с этим несдержанность в поведении. Такой же благодарности заслуживают мои друзья и сотрудники из Intertech Training. Я очень ценю оказанную вами поддержку (как прямую, так и косвенную). Наконец, отдельное спасибо и "все фантики" моей жене Мэнди за ее любовь и содействие.
Я помню время, много лет тому назад, когда я предложил издательству Apress книгу, посвященную еще не выпущенному на тот момент пакету инструментальных средств разработки под названием Next Generation Windows Services (NGWS - сервисы Windows следующего поколения). Вы, наверное, знаете, что пакет NGWS в конечном счете стал тем, что сегодня называется платформой .NET. Параллельно с моими исследованиями в области разработки языка программирования C# и платформы .NET шло создание начального варианта соответствующей рукописи. Это был фантастический проект, но я должен признаться, что писать о технологии, которая претерпевала весьма значительные изменения в ходе своей разработки, было занятием, очень действующим на нервы. К счастью, после многих бессонных ночей, где-то к началу лета 2001 года, первое издание книги C# and the .NET Platform было опубликовано почти одновременно с выходом .NET 1.0 Beta 2.
С того времени я был чрезвычайно рад и благодарен тому, что эта книга очень благосклонно принимается прессой и, самое главное, читателями. За эти годы книга предлагалась в качестве номинанта на премию Jolt Award (я тогда "пролетел"…) и на премию Referenceware Excellence Award 2003 года в категории книг по программированию (и я счастлив, что на этот раз мне повезло).
Второе издание этой книги (C# end the .NET platform Second Edition) дало мне возможность включить в нее материал, соответствующий версии 1.1 платформы .NET. Хотя второе издание книги содержало обсуждение множества новых тем, ряд глав и примеров включить в окончательный вариант книги вcе же не удалось.
Теперь, когда книга представлена в третьем издании, я с удовлетворением могу заявить, что она содержит (почти) все темы и примеры, которые я не смог представить в предыдущих изданиях. Это издание не только учитывает все многочисленные усовершенствования, предлагаемые в .NET 2.0, но включает и ряд глав, которые, будучи давно написанными, оставались до сих пор неопубликованными – это касается, например, описания CIL (Common Intermediate Language – общий про-межуточный язык).
Как и в предыдущих изданиях, в этом, третьем издании книги на основе простого и понятного материала представлены язык программирования C# и библиотеки базовых классов .NET. Я никогда не понимал склонность некоторых авторов в созданию технических книг, более похожих на руководство по подготовке к экзамену GRE, чем пригодный для чтения текст. Задачей этого нового издания по-прежнему остается предоставление вам информации, необходимой для построения программных решений сегодня, а не расточительная: трата времени на рассмотрение множества деталей, которые оказываются важными для очень узкого круга специалистов.
Публикации разработчиков новых технологий предназначены для очень требовательной аудитории (я должен знать это не понаслышке – ведь я один из них). Построение программных решений для любой платформы требует чрезвычайной детализации и учета множества особенностей соответствующей отрасли, компании, клиентской базы, а также учета сути дела. Вы можете работать в электронном издательстве, разрабатывать системы для федерального или местного правительства, работать в NASA или каком-то оборонном ведомстве. Я, например, разрабатывал программное обеспечение для обучения детей, создавал различные N-звенные системы и участвовал в многочисленных проектах для медицинских и финансовых учреждений. С вероятностью почти 100 процентов тот программный код, который вы создаете на своем рабочем месте, не имеет никакой связи с программным кодом, который пишу я (если, конечно, нам случайно не приходилось работать вместе).
Поэтому в этой книге я сознательно избегаю примеров, в которых программный код связан со спецификой определенных отраслей производства или сфер программирования. Я пытаюсь описать возможности C#, объектно-ориентированного подхода, CLR и библиотек базовых классов .NET 2.0 с помощью примеров, не использующих такой специфики. Вместо того чтобы в каждом примере заполнять таблицы реальными данными, рассчитывать платежки или выполнять какие-то другие специальные вычисления, я буду рассматривать объекты, с которыми могут иметь дело все,- например, автомобили (с их геометрическими формами и служащими соответствующего предприятия, добавленными для полноты картины). И тут на сцену должны выйти вы.
Моей целью является как можно более понятное объяснение возможностей языка программирования C# и описание различных аспектов его применения в рамках платформы .NET. Я сделаю все, что будет в моих силах, чтобы вы, используя знания и навыки, полученные в процессе работы над этой книгой, могли продолжить дальнейшее освоение соответствующих технологий.
Вашей целью является освоение этой информации и применение ее к вашим конкретным задачам программирования. Я, конечно, понимаю, что ваши проекты вряд ли напрямую связаны с автомобилями, имеющими имена домашних любимцев, но так уж заведено в прикладных науках! Уверен, если вы поймете концепции платформы .NET, представленные в этой книге, то сможете предложить и реализовать решения, подходящие для вашей конкретной среды программирования.
Книга Язык программирования C# 2005 и платформа .NET 2.0, 3-е издание делится на пять логически обособленных разделов, каждый из которых состоит из глав, тем или иным образом связанных между собой. Если вы имели возможность ознакомиться с одним из предыдущих изданий этой книги, вы сможете заметить некоторое сходство в названиях ряда глав, но знайте, что здесь почти на каждую страницу был добавлен новый материал и дополнительные примеры. Вы можете также заметить, что некоторые темы, также освещенные в первом и втором изданиях (например, сериализация объектов и сборщик мусора .NET), здесь представлены в виде отдельных глав.