Типы данных C#
Ссылочные типы
хранятся ссылки на нужные данные
типы классов
Исходный базовым классом для всех типов
object
Строки Юникода
string
Пользовательские типы в формате
class C {...}
определяет структуру данных, которая содержит данные-члены (поля) и функции-члены (методы, свойства и т. д.). Классы поддерживают механизмы одиночного наследования и полиморфизма, которые позволяют создавать производные классы, расширяющие и уточняющие определения базовых классов.
типы интерфейсов
Пользовательские типы в формате
interface I {...}
(интерфейс) определяет контракт в виде именованного набора открытых функций-членов. Объект типа class или struct, реализующий interface, должен предоставить реализации для всех функций-членов интерфейса. Тип interface может наследовать от нескольких базовых интерфейсов, а class или struct могут реализовывать несколько интерфейсов
типы массивов
Одно- и многомерные
int[]
int[,]
типы делегатов
Пользовательские типы в формате
delegate int D(...)
(делегат) представляющий ссылки на методы с конкретным списком параметров и типом возвращаемого значения. Делегаты позволяют использовать методы как сущности, сохраняя их в переменные и передавая в качестве параметров. Делегаты аналогичны типам функций, которые используются в функциональных языках. Также принцип их работы близок к указателям функций из некоторых языков, но в отличие от указателей функций делегаты являются объектно-ориентированными и строго типизированными.
поддерживают универсальные шаблоны, которые позволяют передавать им другие типы в качестве параметров.
Стек
структура данных, которая сохраняет элементы по принципу «последним пришёл — первым вышел» . Примером из жизни служит стопка тарелок. Скорость работы со стеком гораздо выше, чем с оперативной памятью, следовательно, использование стека повышает скорость работы программы
Куча
область динамической памяти, которая выделяется приложению для хранения данных (например объектов). Доступ к данным в куче осуществляется медленнее, чем к стеку. Переменные ссылочных типов хранят ссылки на данные
Типы значений
содержат непосредственно данные
простые типы
Целочисленный со знаком
sbyte
8 бит, в диапазоне от –128 до 127
short
16 бит, в диапазоне от –32 768 до 32 767
int
32 бита, в диапазоне от –2 147 483 648 до 2 147 483 647
long
64 бита, в диапазоне от –9 223 372 036 854 775 808 до 9 223 372 036 854 775 807
Целочисленный без знака
byte
8 бит, в диапазоне от 0 до 255
ushort
16 бит, в диапазоне от 0 до 65 535
uint
32 бита, в диапазоне от 0 до 4 294 967 295
ulong
64 бит, в диапазоне от 0 до 18 446 744 073 709 551 615
Символы Юникода
char
IEEE-представление с плавающей запятой
float
32 бита, в диапазоне от 1,5 × 10–45 до 3,4 × 1038, с точностью до 7 цифр
double
64 бита, в диапазоне от 5,0 × 10–324 до 1,7 × 10308, с точностью до 15 цифр
Десятичный с повышенной точностью
decimal
128 бит, в диапазоне по крайней мере от –7,9 × 10−28 до 7,9 × 1028, с точностью не менее 28 цифр
Логическое значение
bool
Типы структур
Пользовательские типы в формате
struct S {...}
типы перечисления
Пользовательские типы в формате
enum E {...}
является отдельным типом со списком именованных констант. Каждый тип enum имеет базовый тип, в роли которого выступает одним из восьми целочисленных типов. Набор значений типа enum аналогичен набору значений его базового типа
типы, допускающие значение Null
Расширения других типов значений, допускающие значение