Типы данных 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#.
|
Категория операций |
Операции |
|
Арифметические |
+ – * / % |
|
Логические (boolean и побитовые) |
& | ^ ! ~ && || |
|
Строковые |
+ |
|
Инкремент и декремент |
++ -- |
|
Сдвиг |
>> << |
|
Сравнение |
== != < > <= >= |
|
Присвоение |
= += –= *= /= %= &= |= ^= <<= >>= |
|
Обращение к члену класса |
. |
|
Индексация |
[] |
|
Приведение типа (Cast) |
() |
|
Условие |
?: |
|
Создание объекта |
new() |
|
Информация о типе |
is sizeof typeof |
|
Управление исключениями |
checked unchecked |
|
Косвенности и адресации |
* –> [] & |
Имя и тип переменной задаются при ее объявлении и остаются неизменными в течение всего времени ее жизни. Особенностью языка C# является требование обязательной инициализации переменной до начала ее использования. Попытка использовать неинициализированную переменную приводит к ошибкам, обнаруживаемым еще на этапе компиляции.
По используемым выражениям и операторам C# похож на C++. Так в программах на C# используются такие операторы как:
Оператор присваивания (=)
Составной оператор ({})
Операторы выбора: if-else и switch
Операторы цикла: for, while, оператор
Операторы break и continue
Оператор return
Оператор перехода goto
Кроме того, введены несколько новых инструкций. Например, оператор foreach позволяет получить доступ ко всем элементам массива или коллекции поочередно, в порядке возрастания индексов. Его синтаксис:
foreach (тип идентификатор in контейнер) оператор
В C# процедуры и функции существуют только как методы некоторого класса, они не определены вне класса. Роль библиотек процедур и функций выполняют библиотеки классов. Библиотека классов Framework Class Library (FCL), доступная в языке C#, существенно расширяет возможности языка.
