Знакомство со средой разработки Microsoft Visual Studio.NET. Структура программы на C#. Основы языка C#
Общие сведения
Microsoft Visual Studio .NET - это интегрированная среда разработки для создания, документирования, запуска и отладки программ, написанных на языках .NET.
Эта среда разработки является открытой языковой средой. Наряду с языками программирования, изначально включенными в среду - C ++, C#, J#, Visual Basic, - в нее могут добавляться любые языки программирования, компиляторы которых создаются сторонними разработчиками. Необходимым условием для включения языков в среду Visual Studio .NET является использование единого каркаса – платформы Framework.Net.
Платформа Framework.NET позволяет:
- легко использовать компоненты, разработанных на различных языках;
- разрабатывать единое приложение из нескольких частей на разных языках;
Для разработки приложений в Visual Studio.NET используются проекты.
Проект (Project) - это основная единица, с которой имеет дело разработчик. Сначала он должен выбрать тип проекта, после чего Visual Studio создает каркас проекта в соответствии с выбранным типом.
Проект состоит из классов, собранных в одном или нескольких пространствах имен. Пространства имен (Namespaces) позволяют структурировать проекты, содержащие большое число классов, объединяя в одну группу близкие классы.
Несколько проектов могут объединяться в решение (Solution), которое также может включать ресурсы, необходимые этим проектам.
С точки зрения разработчика конечным результатом его работы, получаемым после компиляции исходного программного кода, является решение, а с точки зрения CLR (Common Language Runtime - общеязыковой среды исполнения) – сборка (assembly), содержащая PE файл, т.е. модуль в формате исполняемого файла PE (Portable Executable) для 32-разрядной ОС Windows либо DLL (Dynamic Link Library) файл.
Visual Studio.Net предлагает большое разнообразие возможных типов проектов. Для ознакомления с основами языка С# в основном будут использованы консольные приложения без привлечения привычных в Windows возможностей пользовательского интерфейса.
В C# нет глобальных функций, поэтому по умолчанию при создании консольного приложения объявляется класс Program, который содержит функцию static Main(), служащую начальной точкой выполнения программы. Функция Main может быть объявлена без параметров или с параметром, представляющий собой массив строк.
Также программа на C# может содержать комментарии и атрибуты.
В C# используются однострочные и многострочные комментарии. Однострочный комментарий начинается с пары символов " // ", и весь текст до конца строки является комментарием. Многострочный комментарий начинается с пары символов /* и заканчивается */.
Атрибут - средство добавления декларативной информации к элементам программного кода. Назначение атрибутов: организация взаимодействия между программными модулями, дополнительная информация об условиях выполнения кода, управление сериализацией (т.е. правила сохранения информации), отладка, и др. Атрибуты могут быть как стандартными, так и заданными пользователем. Стандартные атрибуты используются CLR и влияют на то, как будет выполняться проект. Атрибут размещается в скобках " [] ".
Типы данных C#.
Стандарт языка C++ включает следующий набор фундаментальных типов.
- Логический тип ( bool ).
- Символьный тип ( char ).
- Целые типы. Они могут отличаться размером: short, int, long, а также могут быть знаковыми ( signed ) или беззнаковыми ( unsigned ).
- Типы с плавающей точкой. Они также могут отличаться размерами: float, double и long double.
Тип void указывает на отсутствие информации.
К конструируемым типам относятся следующие:
- Указатели (например, char* ).
- Ссылки (например, char& ).
- Массивы (например, char[] ).
Также язык позволяет разработчику конструировать собственные типы:
- Перечислимые типы ( enum ).
- Структуры ( struct ).
- Классы.
В языке C# все типы можно рассматривать и под другим ракурсом, разделив их на четыре категории:
- Типы-значения ( value ).
- Ссылочные ( reference ).
- Указатели ( pointer ).
- Тип void.
Для ссылочного типа значение задает ссылку на область памяти в "куче" (heap), где расположен соответствующий объект. Для типа-значения значением являются собственно данные, а память для них выделяется в стеке.
Логический, арифметический, структуры, перечисление относятся типам-значениям. Массивы, строки и классы относятся к ссылочным типам.
И ссылочные, и обычные типы являются производными от базового класса object. В тех случаях, когда обычный тип должен вести себя как объект, создается оболочка (wrapper), которую можно рассматривать как ссылочный объект, помещенный в кучу, и в нее копируется значение переменной обычного типа. Оболочка автоматически помечается таким образом, что система знает, какое значение она содержит. Этот процесс назывется упаковкой (boxing), а обратный процесс - распаковкой (unboxing).
Упаковка происходит автоматически, для этого нужно только присвоить значение обычного типа переменной типа object. Упаковка и распаковка позволяют обрабатывать любой тип как объект. Например, в выражении
7.ToString();
целое число 7 упаковывается путем вызова функции Int32.ToString().
Массивы в C# могут быть многомерными (multidimensional) или невыровненными (jagged). Более сложные структуры данных такие, как стек и хеш-таблица определены в пространстве имен System.Collections.
Выражения и операторы C#.
Выражения строятся из операндов - констант, переменных, функций, - объединенных знаками операций и скобками. При вычислении выражения определяется его значение и тип.
В таблице ниже приведен список операций C#.
Имя и тип переменной задаются при ее объявлении и остаются неизменными в течение всего времени ее жизни. Особенностью языка C# является требование обязательной инициализации переменной до начала ее использования. Попытка использовать неинициализированную переменную приводит к ошибкам, обнаруживаемым еще на этапе компиляции.
По используемым выражениям и операторам C# похож на C++. Так в программах на C# используются такие операторы как:
- Оператор присваивания ( = )
- Составной оператор ( {} )
- Операторы выбора: if-else и switch
- Операторы цикла: for, while, оператор
- Операторы break и continue
- Оператор return
- Оператор перехода goto
Кроме того, введены несколько новых инструкций. Например, оператор foreach позволяет получить доступ ко всем элементам массива или коллекции поочередно, в порядке возрастания индексов. Его синтаксис:
foreach (тип идентификатор in контейнер) оператор
В C# процедуры и функции существуют только как методы некоторого класса, они не определены вне класса. Роль библиотек процедур и функций выполняют библиотеки классов. Библиотека классов Framework Class Library (FCL), доступная в языке C#, существенно расширяет возможности языка.