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