Типы значений (Справочник по C#)
Типы значений состоят из двух основных категорий:
Структуры делятся на следующие категории:
Числовые типы
Пользовательские структуры.
Основные характеристики типов значений
Переменные, основанные на типах значений, содержат непосредственно значения. При присвоении переменной одного типа значений другому создается копия присваиваемого значения. В этом заключается отличие от переменных ссылочного типа, при присвоении которых копируются ссылки на объекты, но не сами объекты.
Все типы значений являются неявными производными от ValueType.
В отличие от ссылочных типов, новый производный тип из типа значения создать нельзя. Однако, как и в ссылочных типах, структуры могут реализовывать интерфейсы.
В отличие от ссылочных типов тип значения не может содержать значение null. Однако функция тип, допускающий значение null допускает типы значения, которое необходимо присвоить null.
Для каждого типа значений существует неявный конструктор по умолчанию, инициализирующий значение по умолчанию для данного типа.. Дополнительные сведения о значениях по умолчанию типов значений см. в таблице значений по умолчанию.
Основные характеристики простых типов
Все простые типы — встроенные в язык C# — являются псевдонимами системных типов .NET Framework. Например, int является псевдонимом для Int32. Полный список значений псевдонимов см. в разделе Таблица встроенных типов (Справочник по C#).
Константные выражения, все операнды которых являются константами простых типов, вычисляются при компиляции.
Простые типы можно инициализировать с помощью литералов. Например, "A" — это литерал типа char, а 2001 — литерал типа int.
Инициализация типов значений
Локальные переменные в C# должны быть инициализированы перед использованием. Например, можно объявить локальную переменную без инициализации, как показано в следующем примере:
int myInt;
Однако ее нельзя использовать без инициализации. Для инициализации используется следующий оператор:
myInt = new int(); // Invoke default constructor for int type.
Этот оператор эквивалентен следующему оператору:
myInt = 0; // Assign an initial value, 0 in this example.
Разумеется, можно разместить объявление и инициализацию в одном и том же операторе, как показано в следующих примерах.
int myInt = new int();
—либо—
int myInt = 0;
Оператор new вызывает конструктор определенного типа по умолчанию и присваивает переменной значение по умолчанию. В предыдущем примере конструктор по умолчанию присвоил значение 0 переменной myInt. Дополнительные сведения о значениях, присваиваемых путем вызова конструкторов по умолчанию см. в таблице значений по умолчанию.
При наличии пользовательских типов используйте new для вызова конструктора по умолчанию. В следующем примере кода вызывается конструктор по умолчанию структуры Point.
Point p = new Point(); // Invoke default constructor for the struct.
После вызова структура считается окончательно присвоенной, все ее члены инициализируются со значениями по умолчанию.
Дополнительные сведения об операторе new см. в разделе new.
Сведения о форматировании результатов числовых типов см. в разделе Таблица форматирования числовых результатов.
См. также
Ссылки
Ссылочные типы (Справочник по C#)
Основные понятия
Руководство по программированию на C#