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

Типы значений относятся к двум основным категориям:The value types consist of two main categories:

Структуры делятся на следующие категории:Structs fall into these categories:

Основные возможности типов значенийMain Features of Value Types

Переменные, основанные на типах значений, непосредственно содержат значения.Variables that are based on value types directly contain values. Если присвоить одну переменную типа значения другой, в нее будет скопировано содержащееся в исходной переменной значение.Assigning one value type variable to another copies the contained value. В этом заключается отличие от присвоения переменных ссылочного типа, при котором копируется не сам объект, а ссылка на него.This differs from the assignment of reference type variables, which copies a reference to the object but not the object itself.

Все типы значения являются неявными производными от System.ValueType.All value types are derived implicitly from the System.ValueType.

В отличие от ссылочных типов, создать новый производный от типа значения тип нельзя.Unlike with reference types, you cannot derive a new type from a value type. Тем не менее, как и ссылочные типы, структуры могут реализовывать интерфейсы.However, like reference types, structs can implement interfaces.

В отличие от ссылочных типов, тип значения не может содержать значение null.Unlike reference types, a value type cannot contain the null value. Тем не менее с помощью типов, допускающих значение null, можно присваивать типы значений значениям null.However, the nullable types feature does allow for value types to be assigned to null.

Каждый тип значения имеет неявный конструктор по умолчанию, который инициализирует значение по умолчанию для этого типа.Each value type has an implicit default constructor that initializes the default value of that type. Дополнительные сведения о значениях по умолчанию для типов значений см. в разделе Таблица значений по умолчанию.For information about default values of value types, see Default Values Table.

Основные возможности простых типовMain Features of Simple Types

Все простые типы, реализованные в языке C#, являются псевдонимами системных типов платформы .NET.All of the simple types -- those integral to the C# language -- are aliases of the .NET Framework System types. Например, int является псевдонимом типа System.Int32.For example, int is an alias of System.Int32. Полный список псевдонимов см. в разделе Таблица встроенных типов.For a complete list of aliases, see Built-In Types Table.

Константные выражения, операнды которых являются константами простого типа, вычисляются во время компиляции.Constant expressions, whose operands are all simple type constants, are evaluated at compilation time.

Простые типы можно инициализировать с помощью литералов.Simple types can be initialized by using literals. Например, "A" — это литерал типа char, а "2001" — литерал типа int.For example, 'A' is a literal of the type char and 2001 is a literal of the type int.

Инициализация типов значенийInitializing Value Types

В языке C# локальные переменные необходимо инициализировать перед использованием.Local variables in C# must be initialized before they are used. Например, можно объявить локальную переменную без инициализации, как показано в следующем примере:For example, you might declare a local variable without initialization as in the following example:

int myInt;  

Тем не менее использовать ее до инициализации нельзя.You cannot use it before you initialize it. Для инициализации локальной переменной можно использовать следующую инструкцию:You can initialize it using the following statement:

myInt = new int();  // Invoke default constructor for int type.  

Эта инструкция эквивалентна следующей:This statement is equivalent to the following statement:

myInt = 0;         // Assign an initial value, 0 in this example.  

При необходимости объявление и инициализация могут быть выполнены в одной инструкции, как показано в следующем примере:You can, of course, have the declaration and the initialization in the same statement as in the following examples:

int myInt = new int();  

– или ––or–

int myInt = 0;  

Инструкция new вызывает конструктор по умолчанию для конкретного типа и присваивает переменной значение по умолчанию.Using the new operator calls the default constructor of the specific type and assigns the default value to the variable. В предыдущем примере конструктор по умолчанию присваивает значение 0 переменной myInt.In the preceding example, the default constructor assigned the value 0 to myInt. Дополнительные сведения о значениях, присваиваемых путем вызова конструктора по умолчанию, см. в разделе Таблица значений по умолчанию.For more information about values assigned by calling default constructors, see Default Values Table.

Для определяемых пользователем типов инструкция new вызывает конструктор по умолчанию.With user-defined types, use new to invoke the default constructor. Например, следующая инструкция вызывает конструктор по умолчанию для структуры Point:For example, the following statement invokes the default constructor of the Point struct:

Point p = new Point(); // Invoke default constructor for the struct.  

После этого вызова структура считается определенно присвоенной, то есть все ее элементы будут инициализированы и получат значения по умолчанию.After this call, the struct is considered to be definitely assigned; that is, all its members are initialized to their default values.

Дополнительные сведения об операторе new см. в этом разделе.For more information about the new operator, see new.

Дополнительные сведения о форматировании выходных данных числовых типов см. в разделе Таблица форматирования числовых результатов.For information about formatting the output of numeric types, see Formatting Numeric Results Table.

См. такжеSee Also

Справочник по C#C# Reference
Руководство по программированию на C#C# Programming Guide
Ключевые слова в C#C# Keywords
ТипыTypes
Справочные таблицы по типамReference Tables for Types
Ссылочные типыReference Types