Типы значений (Справочник по C#)

Обновлен: Ноябрь 2007

Типы значений состоят из двух основных категорий:

Структуры делятся на следующие категории:

Основные характеристики типов значений

Переменные, основанные на типах значений, содержат непосредственно значения. При присвоении переменной одного типа значений другому создается копия присваиваемого значения. В этом заключается отличие от переменных ссылочного типа, при присвоении которых копируются ссылки на объекты, но не сами объекты.

Все типы значений являются неявными производными от System.ValueType.

В отличие от ссылочных типов, можно создать новый тип из типа значения. Однако, как и в ссылочных типах, структуры могут реализовывать интерфейсы.

В отличие от ссылочных типов тип значения не может содержать значение null. Однако благодаря типам, допускающим значение null, все же можно присваивать типам значений значение null.

Для каждого типа значений существует неявный конструктор по умолчанию, инициализирующий значение по умолчанию для данного типа.. Дополнительные сведения о значениях по умолчанию типов значений см. в таблице значений по умолчанию.

Основные характеристики простых типов

Все простые типы — встроенные в язык C# — являются псевдонимами системных типов .NET Framework. Например, int является псевдонимом для System.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#

Ссылочные типы (Справочник по C#)

Другие ресурсы

Справочник по C#

Типы (справочник по C#)

Справочные таблицы по типам (справочник по C#)