Share via


__value

Nota

Este tema solo se aplica a la versión 1 de Extensiones administradas para C++.Esta sintaxis sólo se debe utilizar para mantener el código de la versión 1.Vea clases y Structs (administrados) para obtener información sobre cómo usar la funcionalidad equivalente en la nueva sintaxis.

Declara una clase para ser un tipo __value.

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

Comentarios

Un tipo de __value diferencia de los tipos de __gc en que las variables de tipo de __value contienen directamente los datos, como punto de variables administrado a los datos, que se almacena en la pila de Common Language Runtime.

Las condiciones siguientes se aplican a los tipos de __value :

  • la palabra clave de __value no se puede aplicar a una interfaz.

  • un tipo de __value puede heredar de cualquier número de interfaces y no puede heredar de otros tipos o de los tipos de __value .

  • Un tipo está sellado de __value por definición. Para obtener más información, vea __sealed.

  • Es válido utilizar __value escribe en un tipo administrado se permite.

Nota

La palabra clave de __value no se permite cuando se utiliza con la palabra clave de __abstract .

Un tipo de __value puede explícitamente estar conectado a un puntero de System::Objeto . Esto se conoce como la conversión boxing.

Las instrucciones siguientes se aplican a insertar un tipo de valor dentro de __nogc escriba:

  • el tipo de valor debe tener LayoutSequential o LayoutExplicit.

  • El tipo de valor no puede tener miembros de puntero de la cromatografía gaseosa.

  • El tipo de valor no puede tener miembros de datos privados.

En Extensiones administradas para C++, equivalentes a una clase de C# y struct de C# son los siguientes:

Extensiones administradas para C++

C#

Para obtener más información

struct __gc

O bien

clase __gc

clase

palabra clave declase

struct __value

O bien

clase __value

struct

palabra clave destruct

Ejemplo

En el ejemplo siguiente, declaran y después dos instancias del tipo de __value se manipulan a un tipo de __value (V):

// 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
}