__value

Hinweis

Dieses Thema gilt nur für Version 1 von Managed Extensions for C++ zu.Diese Syntax sollte nur verwendet werden, um Code zu erhalten, Version 1.Weitere Informationen finden Sie unter Classes and Structs (Managed) zu Informationen über die Verwendung der entsprechenden Funktionen in der neuen Syntax.

Deklariert eine Klasse, um ein __value Typ sein.

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

Hinweise

Ein __value-Typ unterscheidet sich von __gc-Typen in Variablen, dass __value-Typ direkt ihre Daten enthalten, während verwalteter Variablen das Popup auf ihre Daten, die auf dem Common Language Runtime-Heap gespeichert wird.

Die folgenden Bedingungen gelten für __value-Typen:

  • Das __value-Schlüsselwort kann nicht auf eine Schnittstelle angewendet wurden.

  • Ein __value-Typ kann von einer beliebigen Anzahl von Schnittstellen erben und kann nicht von anderen Typen oder __value-Typen erben.

  • Ein __value-Typ ist definitionsgemäß versiegelt. Weitere Informationen finden Sie unter __sealed.

  • Es ist zulässig, einen Typ zu __value überall dort verwenden, wo ein verwalteter Typ zulässig ist.

Hinweis

Das __value-Schlüsselwort ist nicht zulässig, wenn er mit dem __abstract-Schlüsselwort verwendet wird.

Ein __value-Typ kann an einen Zeiger System::Objekt explizit verknüpft sind. Dies wird als Boxing.

Die folgenden Richtlinien gelten für die Einbettung eines Werttyps innerhalb eines __nogc-Typs:

  • Der Werttyp muss LayoutSequential oder LayoutExplicithaben.

  • Der Werttyp kann Gaschromatographie Member der Zeiger nicht zulässig.

  • Der Werttyp kann privaten Datenmember enthalten.

In Managed Extensions for C++ sind die Entsprechungen zu einer C#-Klasse und eine C#-Struktur wie folgt:

Managed Extensions for C++

C#

Weitere Informationen

__gc Struktur

- oder -

__gc Klasse

class

Klasse-Schlüsselwort

__value Struktur

- oder -

__value Klasse

struct

Struktur-Schlüsselwort

Beispiel

Im folgenden Beispiel wird ein __value-Typ (V) deklariert und dann zwei Instanzen des Typs __value bearbeitet wird:

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