программирование. Руководство su P# a n Reference в herbert schildt полное руководство с 0 герберт шилдт
Скачать 3.32 Mb.
|
Герберт ШилдтC# 4.0 полное руководство ‑ 2011ПОЛНОЕ РУКОВОДСТВО Su P# A n Reference В HERBERT SCHILDT ПОЛНОЕ РУКОВОДСТВО С#4.0 ГЕРБЕРТ ШИЛДТ Москва • Санкт‑Петербург • Киев 2011 ББК 32.973.26‑018.2.75 Ш 57 УДК 681.3.07 Издательский дом "Вильямс" Зав. редакцией С.Н. Тригуб Перевод с английского и редакция И.В. Берштейна По общим вопросам обращайтесь в Издательский дом "Вильямс" по адресу: info@williamspublishing.com , http://www.williamspublishing.com Шилдт, Герберт. Ш57 C# 4.0: полное руководство. : Пер. с англ. – М. : ООО "И.Д. Вильямс", 2011. – 1056 с.: ил. – Парал. тит. англ. ISBN 978‑5‑8459‑1684‑6 (рус.) ББК 32.973.26‑018.2.75 Все названия программных продуктов являются зарегистрированными торговыми марками соответствующих фирм. Никакая часть настоящего издания ни в каких целях не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами, будь то электронные или механические, включая фотокопирование и запись на магнитный носитель, если на это нет письменного разрешения издательства McGrow‑Hill Higher Ed. Authorized translation from the English language edition published by McGraw‑Hill Companies, Copyright © 2010 All rights reserved. Except as permitted under the Copyright Act of 1976, no part of this publication may be reproduced or distributed in any form or by any means, or stored in a database or retrieval system, without the prior written permission of publisher, with the exception that the program listings may be entered, stored, and executed in a computer system, but they may not be reproduced for publication. Russian language edition published by Williams Publishing House according to the Agreement with R&I Enterprises International, Copyright © 2011 Научно‑популярное издание Герберт Шилдт C# 4.0: полное руководство Литературный редактор Е.П. Перестюк Верстка А.В. Чернокозинская Художественный редактор С А. Чернокозинский Корректор АЛ. Гордиенко Подписано в печать 17.09.2010. Формат 70x100/16. Гарнитура Times. Печать офсетная. Уел. печ. л. 85,14. Уч.‑изд. л. 51,55. Тираж 1500 экз. Заказ № 24007. Отпечатано по технологии CtP в ОАО "Печатный двор" им. А. М. Горького 197110, Санкт‑Петербург, Чкаловский пр., 15. ООО "И. Д. Вильямс", 127055, г. Москва, ул. Лесная, д. 43, стр. 1 © Издательский дом "Вильямс", 2011 © by The McGraw‑Hill Companies, 2010 ISBN 978‑5‑8459‑1684‑6 (рус.) ISBN 0‑07‑174116‑Х (англ.) Оглавление Содержание Краткий обзор элементов C# Точка с запятой и оформление исходного текста программы Управляющие последовательности символов Операторы Поразрядные составные операторы присваивания Объявление управляющих переменных в цикле for Добавление метода в класс Building Массивы и строки Строки Подробнее о методах и классах Возврат объектов из методов Необязательные аргументы и неоднозначность Перегрузка операторов Операторы преобразования Индексаторы и свойства Применение индексаторов и свойств Наследование Порядок вызова конструкторов Упаковка и распаковка Интерфейсы, структуры и перечисления Инициализация перечисления Обработка исключительных ситуаций Получение производных классов исключений Применение средств ввода‑вывода Использование класса FileStream для копирования файла Применение классов StringReader и StringWriter Делегаты, события и лямбда‑выражения События Пространства имен, препроцессор и сборки Директива #еггог Получение типов данных из сборок Обобщения // ... Сравнение экземпляров параметра типа // ... Применение вложенных операторов from Формирование запросов с помощью методов запроса Небезопасный код, указатели, обнуляемые типы и разные ключевые слова Частичные методы Библиотека C# Структуры типов данных с плавающей точкой Окончание табл. 21.9 Сортировка и поиск в массивах Класс Tuple Сцепление строк , Заполнение и обрезка строк Определение пользовательского формата даты и времени Свойство IsBackground Семафор Многопоточное программирование. Часть вторая: библиотека TPL Другие средства организации задач Вопросы эффективности PLINQ Сортировка и поиск в коллекции типа ArrayList Специальные коллекции Класс DictionaryCTKey, TValue> Сохранение объектов, определяемых пользователем классов, в коллекции Создание именованного итератора Исключения, генерируемые методом GetResponseStream () Дескрипторы XML‑комментариев п Оглавление Содержание Глава 20. Небезопасный код, указатели, обнуляемые типы и разные ключевые слова 681 06 авторе Герберт Шилдт (Herbert Schildt) является одним из самых известных специалистов по языкам программирования С#, C++, С и Java. Его книги по программированию изданы миллионными тиражами и переведены с английского на все основные иностранные языки. Его перу принадлежит целый ряд популярных книг, в том числе Полный справочник по Java , Полный справочник по C++, Полный справочник по С (все перечисленные книги вышли в издательстве "Вильямс" в 2007 и 2008 гг.). Несмотря на то что Герберт Шилдт интересуется всеми аспектами вычислительной техники, его основная специализация – языки программирования, в том числе компиляторы, интерпретаторы и языки программирования роботов. Он также проявляет живой интерес к стандартизации языков. Шилдт окончил Иллинойский университет и имеет степени магистра и бакалавра. Связаться с ним можно, посетив его веб‑сайт по адресу www.HerbSchildt.com . N 0 научном редакторе Майкл ХоварД (Michael Howard) работает руководителем проекта программной защиты в группе техники информационной безопасности, входящей в подразделение разработки защищенных информационных систем (TwC) корпорации Microsoft, где он отвечает за внедрение надежных с точки зрения безопасности методов проектирования, программирования и тестирования информационных систем в масштабах всей корпорации. Ховард является автором методики безопасной разработки (Security Development Lifecycle – SDL) – процесса повышения безопасности программного обеспечения, выпускаемого корпорацией Microsoft. Свою карьеру в корпорации Microsoft Ховард начал в 1992 году, проработав два первых года с ОС Windows и компиляторами в службе поддержки программных продуктов (Product Support Services) новозеландского отделения корпорации, а затем перейдя в консультационную службу (Microsoft Consulting Services), где он занимался клиентской поддержкой инфраструктуры безопасности и помогал в разработке заказных проектных решений и программного обеспечения. В 1997 году Ховард переехал в Соединенные Штаты и поступил на работу в отделение Windows веб‑службы Internet Information Services, представлявшей собой веб‑сервер следующего поколения в корпорации Microsoft, прежде чем перейти в 2000 году к своим текущим служебным обязанностям. Ховард является редактором журнала IEEE Security & Privacy, часто выступает на конференциях, посвященных безопасности программных средств, и регулярно пишет статьи по вопросам безопасного программирования и проектирования программного обеспечения. Он является одним из авторов шести книг по безопасности информационных систем. Благодарности Особая благодарность выражается Майклу Ховарду за превосходное научное редактирование книги. Его знания, опыт, дельные советы и предложения оказались неоценимыми. Предисловие эффективности и переносимости разрабатываемых ими программ. Они не менее требовательны к применяемым инструментальным средствам и особенно к языкам программирования. Существует немало языков программирования, но лишь немногие из них действительно хороши. Хороший язык программирования должен быть одновременно эффективным и гибким, а его синтаксис – кратким, но ясным. Он должен облегчать создание правильного кода, не мешая делать это, а также поддерживать самые современные возможности программирования, но не ультрамодные тенденции, заводящие в тупик. И наконец, хороший язык программирования должен обладать еще одним, едва уловимым качеством: вызывать у нас такое ощущение, будто мы находимся в своей стихии, когда пользуемся им. Именно таким языком и является С#. рограммисты – люди требовательные, постоянно ищущие пути повышения производительности, Язык C# был создан корпорацией Microsoft для поддержки среды .NET Framework и опирается на богатое наследие в области программирования. Его главным разработчиком был Андерс Хейльсберг (Anders Hejlsberg) – известнейший специалист по программированию. C# происходит напрямую от двух самых удачных в области программирования языков: С и C++. От языка С он унаследовал синтаксис, многие ключевые слова и операторы, а от C++ – усовершенствованную объектную модель. Кроме того, C# тесно связан с Java – другим не менее удачным языком. Имея общее происхождение, но во многом отличаясь, C# и Java похожи друг на друга как близкие, но не кровные родственники. В обоих языках поддерживается распределенное программирование и применяется промежуточный код для обеспечения безопасности и переносимости, но отличия кроются в деталях реализации. Кроме того, в обоих языках предоставляется немало возможностей для проверки ошибок при выполнении, обеспечения безопасности и управляемого исполнения, хотя и в этом случае отличия кроются в деталях реализации. Но в отличие от Java, язык C# предоставляет доступ к указателям – средствам программирования, которые поддерживаются в C++. Следовательно, C# сочетает в себе эффективность, присущую C++, и типовую безопасность, характерную для Java. Более того, компромиссы между эффективностью и безопасностью в этом языке программирования тщательно уравновешены и совершенно прозрачны. На протяжении всей истории вычислительной техники языки программирования развивались, приспосабливаясь к изменениям в вычислительной среде, новшествам в теории языков программирования и новым тенденциям в осмыслении и подходе к работе программистов. И в этом отношении C# не является исключением. В ходе непрерывного процесса уточнения, адаптации и нововведений C# продемонстрировал способность быстро реагировать на потребности программистов в переменах. Об этом явно свидетельствуют многие новые возможности, введенные в C# с момента выхода исходной версии 1.0 этого языка в 2000 году. Рассмотрим для примера первое существенное исправление, внесенное в версии C# 2.0, где был введен ряд свойств, упрощавших написание более гибкого, надежного и быстро действующего кода. Без сомнения, самым важным новшеством в версии C# 2.0 явилось внедрение обобщений. Благодаря обобщениям стало возможным создание типизированного, повторно используемого кода на С#. Следовательно, внедрение обобщений позволило основательно расширить возможности и повысить эффективность этого языка. А теперь рассмотрим второе существенное исправление, внесенное в версии C# 3.0 . Не будет преувеличением сказать, что в этой версии введены свойства, переопределившие саму суть C# и поднявшие на новый уровень разработку языков программирования. Среди многих новых свойств особенно выделяются два следующих: LINQ и лябмда‑выражения. Сокращение LINQ означает язык интегрированных запросов. Это языковое средство позволяет создавать запросы к базе данных, используя элементы С#. А лябмда‑выражения – это синтаксис функционалов с помощью лямбда‑оператора =>, причем лябмда‑выражения часто применяются в LINQ‑выражениях. И наконец, третье существенное исправление было внесено в версии C# 4.0, описываемой в этой книге. Эта версия опирается на предыдущие и в то же время предоставляет целый ряд новых средств для рационального решения типичных задач программирования. В частности, в ней внедрены именованные и необязательные аргументы, что делает более удобным вызов некоторых видов методов; добавлено ключевое слово dynamic, упрощающее применение C# в тех случаях, когда тип данных создается во время выполнения, например, при сопряжении с моделью компонентных объектов (СОМ) или при использовании рефлексии; а средства ковариантности и контравариантности, уже поддерживавшиеся в С#, были расширены с тем, чтобы использовать параметры типа. Благодаря усовершенствованиям среды .NET Framework, представленной в виде библиотеки С#, в данной версии поддерживается параллельное программирование средствами TPL (Task Parallel Library – Библиотека распараллеливания задач) и PLINQ (Parallel LINQ – Параллельный язык интегрированных запросов). Эти подсистемы упрощают создание кода, который мае‑ Предисловие 27 штабируется автоматически для более эффективного использования компьютеров с многоядерными процессорами. Таким образом, с выпуском версии C# 4.0 появилась возможность воспользоваться преимуществами высокопроизводительных вычислительных платформ. Благодаря своей способности быстро приспосабливаться к постоянно меняющимся потребностям в области программирования C# по‑прежнему остается живым и новаторским языком. А следовательно, он представляет собой один из самых эффективных и богатых своими возможностями языков в современном программировании. Это язык, пренебречь которым не может позволить себе ни один программист. И эта книга призвана помочь вам овладеть им. Структура книги В этой книге описывается версия 4.0 языка С#. Она разделена на две части. В части I дается подробное пояснение языка С#, в том числе новых средств, внедренных в версии 4.0. Это самая большая часть книги, в которой описываются ключевые слова, синтаксис и средства данного языка, а также операции ввода‑вывода и обработки файлов, рефлексия и препроцессор. В части II рассматриваемся библиотека классов С#, которая одновременно является библиотекой классов для среды .NET Framework. Эта библиотека довольно обширна, но за недостатком места в этой книге просто невозможно описать ее полностью. Поэтому в части II основное внимание уделяется корневой библиотеке, которая находится в пространстве имен System. Кроме того, в этой части рассматриваются коллекции, организация многопоточной обработки, сетевого подключения к Интернету, а также средства TPL и PLINQ. Это те части более обширной библиотеки классов, которыми пользуется всякий, программирующий на языке С#. Книга для всех программирующих Для чтения этой книги вообще не требуется иметь опыт программирования. Если вы уже знаете C++ или Java, то сможете довольно быстро продвинуться в освоении излагаемого в книге материала, поскольку у C# имеется немало общего с этими языками. Даже если вам не приходилось программировать прежде, вы сможете освоить С#, но для этого вам придется тщательно проработать примеры, приведенные в каждой главе книги. Необходимое программное обеспечение Для компилирования и выполнения примеров программ на C# 4.0, приведенных в этой книге, вам потребуется пакет Visual Studio 2010 (или более поздняя версия). Код, доступный в Интернете Не забывайте о том, что исходный код для примеров всех программ, приведенных в этой книге, свободно доступен для загрузки по адресу www .mhprofessional. com. Что еще почитать Эта книга – своеобразный "ключ" к целой серии книг по программированию, написанных Гербертом Шилдтом. Ниже перечислены другие книги, которые могут представлять для вас интерес. Для изучения языка программирования Java рекомендуются следующие книги. Полный справочник по Java (ИД " Вильямс", 2007 г.) ]ava: руководство для начинающих (ИД " Вильямс", 2008 г.) SWING: руководство для начинающих (ИД "Вильямс", 2007 г.) Искусство программирования на Java (ИД "Вильямс", 2005 г.) Java. Методики программирования Шилдта (ИД "Вильямс", 2008 г.) Для изучения языка программирования C++ особенно полезными окажутся следующие книги. Полный справочник по C++ (ИД "Вильямс", 2007 г.) C++. Руководство для начинающих (ИД "Вильямс", 2005 г.) STL Programming From the Ground Up Искусство программирования на С++ С++. Методики программирования Шилдта (ИД "Вильямс", 2009 г.) Если же вы стремитесь овладеть языком С, составляющим основу всех современных языков программирования, вам будет интересно прочитать книгу Полный справочник по С (ИД "Вильямс", 2007 г.) От издательства Вы, читатель этой книги, и есть главный ее критик и комментатор. Мы ценим ваше мнение и хотим знать, что было сделано нами правильно, что можно было сделать лучше и что еще вы хотели бы увидеть изданным нами. Нам интересно услышать и любые другие замечания, которые вам хотелось бы высказать в наш адрес. Мы ждем ваших комментариев и надеемся на них. Вы можете прислать нам бумажное или электронное письмо, либо просто посетить наш Web‑сервер и оставить свои замечания там. Одним словом, любым удобным для вас способом дайте нам знать, нравится или нет вам эта книга, а также выскажите свое мнение о том, как сделать наши книги более интересными для вас. Посылая письмо или сообщение, не забудьте указать название книги и ее авторов, а также ваш обратный адрес. Мы внимательно ознакомимся с вашим мнением и обязательно учтем его при отборе и подготовке к изданию последующих книг. Наши координаты: E‑mail: info0williamspublishing. com WWW: http://www.williamspublishing.com Информация для писем из: России: 127055, г. Москва, ул. Лесная, д. 43, стр. 1 Украины: 03150, Киев, а/я 152 ЧАСТЬ 1 Язык C# В части I рассматриваются отдельные элементы языка С#, в том числе ключевые слова, синтаксис и операторы. Описывается также ряд основополагающих методов программирования, тесно связанных с языком С#, включая организацию ввода‑вывода и рефлексию. ГЛАВА 1 Создание C# ГЛАВА 2 Краткий обзор элементов C# ГЛАВА 3 Типы данных, литералы и переменные ГЛАВА 4 Опера I оры ГЛАВА 5 Управляющие операторы ГЛАВА 6 Введение в классы, объекты и методы ГЛАВА 7 Массивы и строки ГЛАВА 8 Подробнее о методах и классах ГЛАВА 9 Перегрузка операторов ГЛАВА 10 Индексаторы и свойства ГЛАВА 11 Наследование ГЛАВА 12 Интерфейсы, структуры и перечисления ГЛАВА 13 Обработка исключительных ситуаций ГЛАВА 14 Применение средств ввода‑вывода ГЛАВА 15 Делегаты, события и лямбда‑выражения ГЛАВА 16 Пространства имен, препроцессор и сборки ГЛАВА 17 Динамическая идентификация типов, рефлексия и атрибуты ГЛАВА 18 Обобщения ГЛАВА 19 LINQ ГЛАВА 20 Небезопасный код, указатели, обнуляемые типы и разные ключевые слова |