Читаем Полное руководство. С# 4.0 онлайн бесплатно
Полное руководство. С# 4.0
В этом полном руководстве по C# 4.0 — языку программирования, разработанному специально для среды .NET, — детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки. Книга рассчитана на широкий круг читателей, интересующихся программированием на C#. В данной книге вы найдете: - Полное описание средств языка C# - Подробное рассмотрение новых средств в версии C# 4.0, в том числе PLINQ, библиотеку TPL, именованные и необязательные аргументы, динамический тип данных и многое другое - Сотни простых и понятных примеров программ с комментариями. - Самый полный источник информации по C# Благодаря поддержке параллельного языка интегрированных запросов (PLINQ) и библиотеки распараллеливания задач (TPL) версия 4.0 стала новой вехой в программировании на C#, и поэтому Герберт Шилдт, автор лучших книг по программированию, обновил и расширил свое классическое руководство, чтобы охватить в нем эти и другие нововведения. В книге подробно описываются языковые средства C#, даются профессиональные рекомендации и приводятся сотни примеров программ, охватывающих все аспекты программирования на C#, включая синтаксис, ключевые слова и основные библиотеки, не говоря уже о таких новшествах, как PLINQ, TPL, динамический тип данных, а также именованные и необязательные аргументы. Это необходимое каждому программирующему на C# справочное руководство написано простым и доступным языком, благодаря которому Герберт Шилдт стал таким популярным. В книге найдут ответы на насущные вопросы по C# как начинающие, так и опытные программисты.
Компьютеры и Интернет / Программирование / Книги по ITTable of Contents
Introduction
Создание C#
Краткий обзор элементов C#
Типы данных, литералы и переменные
Операторы
Управляющие операторы
Введение в классы, объекты и методы
Массивы и строки
Подробнее о методах и классах
Перегрузка операторов
Индексаторы и свойства
Наследование
Интерфейсы, структуры и перечисления
Обработка исключительных ситуаций
Применение средств ввода-вывода
Делегаты, события и лямбда-выражения
Пространства имен, препроцессор и сборки
Динамическая идентификация типов, рефлексия и атрибуты
Обобщения
LINQ
Небезопасный код, указатели, обнуляемые типы и разные ключевые слова
Пространство имен System
Строки и форматирование
Многопоточное программирование. Часть первая: основы
Многопоточное программирование. Часть вторая: библиотека TPL
Коллекции, перечислители и итераторы
Сетевые средства подключения к Интернету
Приложение. Краткий справочник по составлению документирующих комментариев
ПОЛНОЕ РУКОВОДСТВО. С# 4.0
Глава 1. Создание C#
Глава 2. Краткий обзор элементов C#
Глава 3. Типы данных, литералы и переменные
Глава 4. Операторы
Глава 5. Управляющие операторы
Глава 6. Введение в классы, объекты и методы
Глава 7. Массивы и строки
Глава 8. Подробнее о методах и классах
Глава 9. Перегрузка операторов
Глава 10. Индексаторы и свойства
Глава 11. Наследование
Глава 12. Интерфейсы, структуры и перечисления
Глава 13. Обработка исключительных ситуаций
Глава 14. Применение средств ввода-вывода
Глава 15. Делегаты, события и лямбда-выражения
Глава 16. Пространства имен, препроцессор и сборки
Глава 17. Динамическая идентификация типов, рефлексия и атрибуты
Глава 18. Обобщения
Глава 19. LINQ
Глава 20. Небезопасный код, указатели, обнуляемые типы и разные ключевые слова
Глава 21. Пространство имен System
Глава 22. Строки и форматирование
Глава 23. Многопоточное программирование. Часть первая: основы
Глава 24. Многопоточное программирование. Часть вторая: библиотека TPL
Глава 25. Коллекции, перечислители и итераторы
Глава 26. Сетевые средства подключения к Интернету
Приложение. Краткий справочник по составлению документирующих комментариев
ГЛАВА 1. Создание C
C# является основным языком разработки про грамм на платформе .NET корпорации Microsoft. В нем удачно сочетаются испытанные средства программирования с самыми последними новше ствами и предоставляется возможность для эффективного и очень практичного написания программ, предназначен ных для вычислительной среды современных предприятий. Это, без сомнения, один из самых важных языков програм мирования XXI века.
Назначение этой главы — представить C# в его истори ческом контексте, упомянув и те движущие силы, которые способствовали его созданию, выработке его конструктив ных особенностей и определили его влияние на другие язы ки программирования. Кроме того, в этой главе поясняется взаимосвязь С# со средой .NET Framework. Как станет ясно из дальнейшего материала, C# и .NET Framework совместно образуют весьма изящную среду программирования. Генеалогическое дерево C
Языки программирования не существуют в пустоте. Напротив, они тесно связаны друг с другом таким образом, что на каждый новый язык оказывают в той или иной форме влияние его предшественники. Этот процесс сродни перекрестному опылению, в ходе которого свойства одного языка приспосабливаются к другому языку, полезные нововведения внедряются в существующий контекст, а устаревшие конструкции уда ляются. Таким путем развиваются языки программирования и совершенствуется ис кусство программирования. И в этом отношении C# не является исключением.
У языка программирования C# "богатое наследство". Он является прямым наслед ником двух самых удачных языков программирования: С и C++. Он также имеет тесные родственные связи с еще одним языком: Java. Ясное представление об этих взаимосвя зях имеет решающее значение для понимания С#. Поэтому сначала определим, какое место занимает C# среди этих трех языков. Язык С - начало современной эпохи программирования
Создание С знаменует собой начало современной эпохи программирования. Язык С был разработан Деннисом Ритчи (Dennis Ritchie) в 1970-е годы для программирова ния на мини-ЭВМ DEC PDP-11 под управлением операционной системы Unix. Несмо тря на то что в ряде предшествовавших языков, в особенности Pascal, был достигнут значительный прогресс, именно С установил тот образец, которому до сих пор следу ют в программировании.
Язык С появился в результате революции в структурном программировании в 1960-е годы. До появления структурного программирования писать большие про граммы было трудно, поскольку логика программы постепенно вырождалась в так на зываемый "макаронный" код — запутанный клубок безусловных переходов, вызовов и возвратов, которые трудно отследить. В структурированных языках программирования этот недостаток устранялся путем ввода строго определенных управляющих операто ров, подпрограмм с локальными переменными и других усовершенствований. Благо даря применению методов структурного программирования сами программы стали более организованными, надежными и управляемыми.
И хотя в то время существовали и другие структурированные языки программи рования, именно в С впервые удалось добиться удачного сочетания эффективности, изящества и выразительности. Благодаря своему краткому, но простому синтаксису в сочетании с принципом, ставившим во главу угла программиста, а не сам язык, С бы стро завоевал многих сторонников. Сейчас уже нелегко представить себе, что С ока зался своего рода "струей свежего воздуха", которого так не хватало программистам. В итоге С стал самым распространенным языком структурного программирования в 1980-е годы.
Но даже у такого достойного языка, как С, имелись свои ограничения. К числу са мых труднопреодолимых его ограничений относится неспособность справиться с боль шими программами. Как только проект достигает определенного масштаба, язык С тут же ставит предел, затрудняющий понимание и сопровождение программ при их последующем разрастании. Конкретный предел зависит от самой программы, про граммиста и применяемых инструментальных средств, тем не менее, всегда существует "порог", за которым программа на С становится неуправляемой. Появление ООП и C++
К концу 1970-х годов масштабы многих проектов приблизились к пределам, с ко торыми уже не могли справиться методики структурного программирования вообще и язык С в частности. Для решения этой проблемы было открыто новое направление в программировании — так называемое объектно-ориентированное программирова ние (ООП). Применяя метод ООП, программист мог работать с более "крупными" программами. Но главная трудность заключалась в том, что С, самый распростра ненный в то время язык, не поддерживал ООП. Стремление к созданию объектно- ориентированного варианта С в конечном итоге привело к появлению C++.
Язык C++ был разработан в 1979 году Бьярне Страуструпом (Bjarne Stroustrup), ра ботавшим в компании Bell Laboratories, базировавшейся в Мюррей-Хилл, шт. Нью- Джерси. Первоначально новый язык назывался "С с классами", но в 1983 году он был переименован в C++. Язык С полностью входит в состав C++, а следовательно, С служит основанием, на котором зиждется C++. Большая часть дополнений, введенных Страу струпом, обеспечивала плавный переход к ООП. И вместо того чтобы изучать совер шенно новый язык, программирующему на С требовалось лишь освоить ряд новых свойств, чтобы воспользоваться преимуществами методики ООП.
В течение 1980-х годов C++ все еще оставался в тени, интенсивно развиваясь, но к на чалу 1990-х годов, когда он уже был готов для широкого применения, его популяр ность в области программирования заметно возросла. К концу 1990-х годов он стал наиболее широко распространенным языком программирования и в настоящее время по-прежнему обладает неоспоримыми преимуществами языка разработки высоко производительных программ системного уровня.
Важно понимать, что разработка C++ не была попыткой создать совершенно новый язык программирования. Напротив, это была попытка усовершенствовать уже суще ствовавший довольно удачный язык. Такой подход к разработке языков программи рования, основанный на уже существующем языке и совершенствующий его далее, превратился в упрочившуюся тенденцию, которая продолжается до сих пор. Появление Интернета и Java
Следующим важным шагом в развитии языков программирования стала разработ ка Java. Работа над языком Java, который первоначально назывался Oak (Дуб), началась в 1991 году в компании Sun Microsystems. Главной "движущей силой" в разработке Java был Джеймс Гослинг (James Gosling), но не малая роль в работе над этим языком при надлежит также Патрику Ноутону (Patrick Naughton), Крису Уорту (Chris Warth), Эду Фрэнку (Ed Frank) и Майку Шеридану (Mike Sheridan).
Java представляет собой структурированный, объектно-ориентированный язык с синтаксисом и конструктивными особенностями, унаследованными от C++. Ново введения в Java возникли не столько в результате прогресса в искусстве программи рования, хотя некоторые успехи в данной области все же были, сколько вследствие перемен в вычислительной среде. До появления на широкой арене Интернета боль шинство программ писалось, компилировалось и предназначалось для конкретного процессора и операционной системы. Как известно, программисты всегда стремились повторно использовать свой код, но, несмотря на это, легкой переносимости про грамм из одной среды в другую уделялось меньше внимания, чем более насущным задачам. Тем не менее с появлением Интернета, когда в глобальную сеть связывались разнотипные процессоры и операционные системы, застаревшая проблема перено симости программ вновь возникла с неожиданной остротой. Для решения проблемы переносимости потребовался новый язык, и им стал Java. Самым важным свойством (и причиной быстрого признания) Java является спо собность создавать межплатформенный, переносимый код, тем не менее, интересно отметить, что первоначальным толчком для разработки Java послужил не Интернет, а потребность в независящем от платформы языке, на котором можно было бы раз рабатывать программы для встраиваемых контроллеров. В 1993 году стало очевидно, что вопросы межплатформенной переносимости, возникавшие при создании кода для встраиваемых контроллеров, стали актуальными и при попытке написать код для Интернета. Напомним, что Интернет — это глобальная распределенная вычислитель ная среда, в которой работают и мирно "сосуществуют" разнотипные компьютеры. И в итоге оказалось, что теми же самыми методами, которыми решалась проблема переносимости программ в мелких масштабах, можно решать аналогичную задачу в намного более крупных масштабах Интернета. Переносимость программ на Java достигалась благодаря преобразованию исходно го кода в промежуточный, называемый байт-кодом. Этот байт-код затем выполнялся виртуальной машиной Java (JVM) — основной частью исполняющей системы Java. Та ким образом, программа на Java могла выполняться в любой среде, для которой была доступна JVM. А поскольку JVM реализуется относительно просто, то она сразу же стала доступной для большого числа сред. Применением байт-кода Java коренным образом отличается от С и C++, где исхо дный код практически всегда компилируется в исполняемый машинный код, кото рый, в свою очередь, привязан к конкретному процессору и операционной системе. Так, если требуется выполнить программу на С или C++ в другой системе, ее придется перекомпилировать в машинный код специально для данной вычислительной среды. Следовательно, для создания программы на С или C++, которая могла был выполнять ся в различных средах, потребовалось бы несколько разных исполняемых версий этой программы. Это оказалось бы не только непрактично, но и дорого. Изящным и рен табельным решением данной проблемы явилось применение в Java промежуточного кода. Именно это решение было в дальнейшем приспособлено для целей языка С#. Как упоминалось ранее, Java происходит от С и C++. В основу этого языка положен синтаксис С, а его объектная модель получила свое развитие из C++. И хотя код Java не совместим с кодом С или C++ ни сверху вниз, ни снизу вверх, его синтаксис очень по хож на эти языки, что позволяет большому числу программирующих на С или C++ без особого труда перейти на Java. Кроме того, Java построен по уже существующему об разцу, что позволило разработчикам этого языка сосредоточить основное внимание на новых и передовых его свойствах. Как и Страуструпу при создании C++, Гослингу и его коллегам не пришлось изобретать велосипед, т.е. разрабатывать Java как совершенно новый язык. Более того, после создания Java языки С и C++ стали признанной основой, на которой можно разрабатывать новые языки программирования. Создание C
Несмотря на то что в Java успешно решаются многие вопросы переносимости про грамм в среде Интернета, его возможности все же ограничены. Ему, в частности, не достает межъязыковой возможности взаимодействия, называемой также многоязыковым программированием. Это возможность кода, написанного на одном языке, без труда взаимодействовать с кодом, написанным на другом языке. Межъязыковая возможность взаимодействия требуется для построения крупных, распределенных программных систем. Она желательна также для создания отдельных компонентов программ, по скольку наиболее ценным компонентом считается тот, который может быть исполь зован в самых разных языках программирования и в самом большом числе операцио нных сред.



