- •А. А. Волосевич
- •Содержание
- •1. Общая характеристика платформы .Net
- •1.1. Инфраструктура платформы .Net
- •1.2. Версии платформы .Net
- •2. Общие концепции синтаксиса языка c#
- •3. Система типов clr и языка c#
- •4. Идентификаторы, ключевые слова и литералы
- •5. Выражения и операции
- •1. Первичные операции
- •2. Унарные операции
- •6. Операторы
- •6.1. Операторы объявления
- •6.2. Операторы выражений
- •6.3. Операторы перехода
- •6.4. Операторы выбора
- •6.5. Операторы циклов
- •6.6. Прочие операторы
- •7. Начальные сведения о массивах
- •8. Классы
- •8.1. Допустимые элементы класса
- •8.2. Модификаторы доступа для элементов и типов
- •8.3. Разделяемые классы
- •8.4. Использование класса
- •9. Методы
- •9.1. Описание метода
- •9.2. Вызов метода
- •9.3. Разделяемые методы
- •10. Свойства и индексаторы
- •11. Статические элементы и методы расширения
- •11.1. Статические элементы
- •11.2. Статические классы
- •11.3. Методы расширения
- •12. Конструкторы и инициализация объектов
- •13. Наследование классов
- •14. КлассSystem.Objectи иерархия типов
- •15. Структуры
- •16. Перечисления
- •17. Интерфейсы
- •18. Универсальные шаблоны
- •18.1. Универсальные классы и структуры
- •18.2. Ограничения на параметры универсальных типов
- •18.3. Универсальные методы
- •18.4. Ковариантность и контравариантность
- •19. Использование универсальных шаблонов
- •19.1. Кортежи
- •19.2. Типы, допускающие значение null
- •19.3. Прочие примеры универсальных шаблонов
- •20. Делегаты
- •21. Анонимные методы и лямбда-выражения
- •22. События
- •23. Перегрузка операций
- •24. Анонимные типы
- •25. Пространства имён
- •26. Генерация и обработка исключительных ситуаций
- •27. Директивы препроцессора
- •28. Документирование исходного кода
- •Литература
1.2. Версии платформы .Net
Компанией Microsoftбыло выпущено несколько версий платформы .NET. В начале 2002 года вышла первая официальная версия .NETFramework. Затем, весной 2003 года была опубликована версия 1.1 – пакет обновлений для версии 1.0. Ноябрь 2005 года ознаменовался выпуском версии 2.0, содержащей обновлённую CLR с поддержкой универсальных шаблонов (generics). В синтаксис языков C# и VB.NET были внесены изменения для поддержки шаблонов, улучшены технологии ASP.NET и ADO.NET. В ноябре 2006 года вместе с выпуском операционной системыWindowsVistaвышла третья версия платформы .NET, которая содержала технологииWindowsPresentationFoundation,WindowsCommunicationFoundation,WorkflowFoundation. В ноябре 2007 года вышла платформа .NET 3.5, основными особенностями которой являются реализация технологии LINQ и новые компиляторы для C# и VB.NET. В августе 2008 года опубликован пакет обновлений для версии 3.5. В апреле 2010 года была выпущена четвёртая версия платформы .NET, которая содержит переработанную CLR и интегрирует множество новых технологий, существовавших ранее в виде отдельных проектов (например,ParallelTaskLibrary,DynamicLanguageRuntime, ASP.NET MVC). Платформа .NET 4.5 доступна с августа 2012 года. Эта версия предлагает набор улучшений дляCLRи новые компиляторы с поддержкой средств асинхронного программирования. Табл. 1 поясняет соотношение между версиями платформы .NET, версиями CLR и версиями языка C#.
Таблица 1
Версии платформы .NET, CLR и языка C#
Год выпуска |
2002 |
2003 |
2005 |
2006 |
2007 |
2008 |
2010 |
2012 | |||||
Версия .NET |
1.0 |
1.1 |
2.0 |
3.0 |
3.5 |
3.5 SP1 |
4.0 |
4.5 | |||||
Версия CLR |
1.0 |
1.1 |
2.0 |
4.0 |
4.5 | ||||||||
Версия C# |
1.0 |
1.2 |
2.0 |
3.0 |
4.0 |
5.0 |
2. Общие концепции синтаксиса языка c#
Специально для платформы .NET был разработан новый язык программирования C#. Этот язык сочетает простой синтаксис, похожий на синтаксис языков C++ и Java, и полную поддержку всех современных объектно-ориентированных концепций и подходов. В качестве ориентира при разработке языка было выбрано безопасное программирование, нацеленное на создание надёжного и простого в сопровождении кода. Здесь и далее рассматривается синтаксис пятой версии языка C#, доступной в составе .NETFramework4.5.
Ключевыми структурными понятиями в языке C# являются программы,сборки,пространства имён,пользовательские типы,элементы типов. Исходный код программы на языке C# размещается в одном или нескольких текстовых файлах, имеющих стандартное расширение.cs. В программе объявляются пользовательские типы, которые состоят из элементов. Примерами пользовательских типов являются классы и структуры, а примером элемента типа – метод класса. Типы могут быть логически сгруппированы в пространства имён, а физически (после компиляции) – в сборки, представляющие собой файлы с расширением.exeили.dll.
Исходный код программы на языке C# – это набор операторов(statements),директив препроцессораикомментариев. Операторы языкаC# и допустимые директивы препроцессора подробно будут рассмотрены далее. Комментарии игнорируются при компиляции и бывают двух видов:
1. Однострочный комментарий– это комментарий, начинающийся с последовательности//и продолжающийся до конца строки.
2. Блочный (многострочный) комментарий– все символы, заключённые между парами/*и*/.
В C# различаются строчные и прописные символы при записи идентификаторов и ключевых слов. Количество пробелов в начале строки, в конце строки и между элементами строки значения не имеет. Это позволяет улучшить визуальную структуру исходного кода программы – операторы одного уровня вложенности обычно предваряются одинаковым начальным отступом.
Рассмотрим короткую программу на языке C#, которая переводит расстояние в милях в километры (текст программы поместим в файл FirstProgram.cs).
using System;
class FirstProgram
{
static void Main()
{
Console.Write("Input miles: ");
string s = Console.ReadLine();
double miles = double.Parse(s);
Console.Write("In kilometers: ");
Console.WriteLine(miles * 1.609);
}
}
Приведённая программа представляет собой описание пользовательского типа – класса с именем FirstProgram. Необязательная директиваusingв первой строке программы служит для ссылки на пространство имёнSystem, группирующее базовый набор классов. Использованиеusing Systemпозволяет вместо полного имени классаSystem.Consoleзаписать короткое имяConsole.
Любая исполняемая программа на C# должна иметь специальную точку входа, с которой начинается выполнение программы. Такой точкой входа всегда является методMain()с модификаторомstatic, объявленный в некотором пользовательском типе программы (в данном случае – в классеFirstProgram). В примере методMain()начинается с вызова методаWrite()классаConsole. МетодыConsole.WriteLine()иConsole.Write()выводят информацию на экран, а методConsole.ReadLine()ожидает ввод пользователя и возвращает введённые данные как строку. Информация сохраняется в локальной строковой переменнойs. Методdouble.Parse()выполняет преобразование строки в вещественный тип.
Программа на C# может быть скомпилирована при помощикомпилятора командной строкиcsc.exe1.При этом можно указать различные опции (например, задать имя итоговой сборки, установить ссылки на необходимые сборки и так далее).
csc.exe FirstProgram.cs
После компиляции будет получена сборка FirstProgram.exe, готовая для запуска на любом компьютере с установленной платформой .NET.