Поделиться через


__value

Примечание

Этот раздел применим только к версии 1 управляемых расширений для C++.Этот синтаксис должен использоваться только для поддержания Кода версии 1.См. классы и структуры (управляемые) дополнительные сведения об использовании эквивалентным функциям в новом синтаксисе.

Объявляет класс, чтобы быть типом __value.

__value class-specifier
__value struct-specifier
__nogc array-specifier
__nogc pointer-specifier

Заметки

A __value тип отличается от __gc типы в __value переменные типа их непосредственно содержат данные, в то время как управляемый пункт переменные в них данные, которые хранятся в куче среды CLR.

Следующие условия применяются к __value типы:

  • __value ключевое слово нельзя применять к интерфейсу.

  • A __value тип может наследовать из любого числа интерфейсов и не может наследовать от других типов или __value типы.

  • A __value тип запечатан определением. Дополнительные сведения см. в разделе __sealed.

  • Он допустим для использования a __value тип везде, где допускается управляемый тип.

Примечание

__value нельзя использовать ключевое слово при использовании с __abstract ключевое слово.

A __value тип можно явно подключиться к a System:: Object указатель. Это называется упаковка-преобразование.

Следующие правила применяются для внедрения тип значения in a __nogc тип:

  • Тип значения должен иметь LayoutSequential OR LayoutExplicit.

  • Тип значения не может иметь членов указателя gc.

  • Тип значения не может быть членами личных данных, таких.

В управляемых расширениях для C++, c# и структуре числа в класс c#:

Управляемые расширения для C++

C#

Дополнительные сведения

Структура __gc

-или-

Класс __gc

class

класс ключевое слово

Структура __value

-или-

Класс __value

struct

структура ключевое слово

Пример

В следующем примере a __value типVобъявляет 2), а затем экземпляра __value тип манипулирован:

// keyword__value.cpp
// compile with: /clr:oldSyntax
#using <mscorlib.dll>

__value struct V { 
   int m_i;
};

int main() {
   V v1, v2;
   v1.m_i = 5;
   v2 = v1;   // copies all fields of v1 to v2
   v2.m_i = 6;   // does not affect v1.m_I
}