|
visual studio основы. Введение в C# и платформу Visual Studio. Net Разработка программных приложений
Введение в C# и платформу Visual Studio.Net MicrosoftVisualStudio .NET - это интегрированная среда разработки для создания, документирования, запуска и отладки программ, написанных на языках .NET. Эта среда разработки является открытой языковой средой. Платформа Framework. Net позволяет: - легко использовать компоненты, разработанные на различных языках;
- разрабатывать единое приложение из нескольких частей на разных языках;
Модули - Двоичные файлы, образующие совместно общую сборку называются модулями.
- При этом один из двоичных файлов должен содержать манифест сборки. Остальные модули могут содержать только метаданные типов и инструкции IL.
Основы C# Что нового принес язык C# по сравнению с уже существовавшими до него языками? - В программах на C#, как правило, нет необходимости в работе с указателями (при сохранении этой возможности), поскольку в нем реализовано автоматическое управление памятью.
- Предусмотрены встроенные синтаксические конструкции для работы с перечислениями, структурами и свойствами классов.
Проекты Для разработки приложений в Visual Studio.Net используются проекты. Проект ( Project ) - это основная единица, с которой имеет дело разработчик. Сначала он должен выбрать тип проекта, после чего Visual Studio создает каркас проекта в соответствии с выбранным типом. Решения - Несколько проектов могут объединяться в решение (Solution), которое также может включать ресурсы, необходимые этим проектам.
Типы данных С# Типы данных С# Стандарт языка 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 И ссылочные, и обычные типы являются производными от базового класса object. В тех случаях, когда обычный тип должен вести себя как объект, создается оболочка (wrapper), которую можно рассматривать как ссылочный объект, помещенный в кучу, и в нее копируется значение переменной обычного типа. Оболочка автоматически помечается таким образом, что система знает, какое значение она содержит. Этот процесс назывется упаковкой ( boxing ), а обратный процесс - распаковкой ( unboxing ). Упаковка происходит автоматически, для этого нужно только присвоить значение обычного типа переменной типа object. Упаковка и распаковка позволяют обрабатывать любой тип как объект. Например, в выражении 3.ToString(); целое число 3 упаковывается путем вызова функции Int32.ToString(). Массивы Массивы в C# могут быть - многомерными ( multidimensional ) или
- невыровненными ( jagged ).
Более сложные структуры данных такие, как стек и хеш-таблица определены в пространстве имен System.Collections. Класс сhar[] В языке C# определен класс сhar[], и его можно использовать для представления строк постоянной длины. Однако массив сhar[] - это обычный массив, поэтому его нельзя инициализировать строкой символов. В C# не определено преобразование из класса сhar[] в класс String. У String есть динамический метод ToCharArray, задающий подобное преобразование в сhar[]. Класс String - Класс String не разрешает изменять существующие объекты.
- Класс StringBuilder позволяет исправить этот недостаток. Этот класс принадлежит к изменяемым классам и его можно найти в пространстве имен System.Text.
Классы и методы в C# - В Visual Studio.Net, и в C# в частности, любая программная система рассматривается как совокупность классов, объединенных в проекты, пространства имен, решения.
- Описание класса имеет следующий синтаксис:
[атрибуты][модификаторы]class имя_класса[:список_родителей] {тело_класса} Тело класса В теле класса могут быть объявлены: - константы;
- поля;
- конструкторы и деструкторы;
- методы;
- события;
- делегаты;
- классы (структуры, интерфейсы, перечисления).
Поля и методы - Поля класса синтаксически являются обычными переменными (объектами) языка. Их описание удовлетворяет обычным правилам объявления переменных. Поля характеризуют свойства объектов класса.
- Методы класса синтаксически являются обычными процедурами и функциями языка. Методы содержат описания операций, доступных над объектами класса. Методы, называемые свойствами являются специальной синтаксической конструкцией, предназначенной для обеспечения эффективной работы с классами.
Конструктор Конструктор представляет собой специальный метод класса, позволяющий создавать объекты класса. Его имя должно совпадать с именем класса. Если разработчик не определяет конструктор класса, то к классу автоматически добавляется конструктор по умолчанию - конструктор без аргументов. Делегат Делегат в C# представляет собой описание случая класса и задает определение функционального типа (класса) данных. Экземплярами класса являются функции. Каждый делегат описывает множество функций с заданной сигнатурой. Каждая функция (метод), сигнатура которого совпадает с сигнатурой делегата, может рассматриваться как экземпляр класса, заданного делегатом. Синтаксис объявления делегата имеет следующий вид: [<спецификатор доступа>] delegate <тип результата> <имя класса> (<список аргументов>); Выражения и операторы C# Выражения строятся из операндов - констант, переменных, функций, - объединенных знаками операций и скобками. При вычислении выражения определяется его значение и тип. Категория операций
| Операции
| Арифметические
| + – * / %
| Логические (boolean и побитовые)
| & | ^ ! && ||
| Строковые
| +
| Инкремент и декремент
| ++ --
| Сдвиг
| >> <<
| Сравнение
| == != < > <= >=
| Присвоение
| = += –= *= /= %= &= |= ^= <<= >>=
| Обращение к члену класса
| .
| Индексация
| []
| Приведение типа (Cast)
| ()
| Условие
| ?:
| Создание объекта
| new()
| Информация о типе
| is sizeof typeof
| Управление исключениями
| checked unchecked
| Косвенности и адресации
| * –> [] &
| Переменные Имя и тип переменной задаются при ее объявлении и остаются неизменными в течение всего времени ее жизни. Особенностью языка C# является требование обязательной инициализации переменной до начала ее использования. Попытка использовать неинициализированную переменную приводит к ошибкам, обнаруживаемым еще на этапе компиляции. Операторы По используемым выражениям и операторам C# похож на C++. Так в программах на C# используются такие операторы как: - Оператор присваивания ( = )
- Составной оператор ( {} )
- Операторы выбора: if-else и switch
- Операторы цикла: for, while, do..while
- Операторы break и continue
- Оператор return
- Оператор перехода goto
Оператор foreach Кроме того, введены несколько новых инструкций. Например, оператор foreach позволяет получить доступ ко всем элементам массива или коллекции поочередно, в порядке возрастания индексов. Его синтаксис: foreach (тип идентификатор in контейнер) оператор Интерфейсы C# Интерфейс представляет собой полностью абстрактный класс, все методы которого абстрактны. Однако методы интерфейса объявляются без указания модификатора доступа, и класс, наследующий интерфейс, обязан полностью реализовать все методы интерфейса. В этом - отличие от класса, наследующего абстрактный класс, где потомок может реализовать лишь некоторые методы родительского абстрактного класса, оставаясь абстрактным классом. Интерфейсы C# Среди интерфейсов, встроенных в библиотеку базовых классов .NET, можно особо выделить такие как: - IEnumerable (для работы с наборами объектов, в т.ч. с использованием оператора foreach ).
- IClonable (копирование объектов).
- IComparable (для сравнения и сортировки объектов).
Пространство имен Пространство имен System.Collections, предназначенное для работы с наборами объектов, поддерживает интерфейсы: - ICollection (определяет общие характеристики класса набора элементов).
- IComparer, IDictionary (позволяет представлять содержимое объекта в виде пар имя-значение).
- IDictionaryEnumerator (нумерация содержимого объекта, поддерживающего IDictionary ).
- IEnumerable, IEnumerator.
- IHashCodeProvider (возвращает хэш-код с помощью выбранного алгоритма хэширования).
- IList (обеспечивает методы добавления, удаления и индексирования элементов в списке объектов).
Сериализация объектов При работе с программной системой зачастую возникает необходимость в сериализации объектов. Под сериализацией понимают процесс сохранения объектов в долговременной памяти (файлах) в период выполнения системы. Под десериализацией понимают обратный процесс - восстановление состояния объектов, хранимых в долговременной памяти. Механизмы сериализации C# и Framework.Net поддерживают два формата сохранения данных - в - бинарном файле и
- XML файле.
В первом случае данные при сериализации преобразуются в бинарный поток символов, который при десериализации автоматически преобразуется в нужное состояние объектов. Другой возможный преобразователь запоминает состояние объекта в формате XML. - Если класс объявить с атрибутом [Serializable], то в него встраивается стандартный механизм сериализации, поддерживающий глубокую сериализацию.
- Если по каким-либо причинам стандартная сериализация разработчика не устраивает, то класс следует объявить наследником интерфейса ISerializable, реализация методов которого позволит управлять процессом сериализации.
|
|
|