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