Выбрать главу

Table 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