__value
Publikováno: duben 2016
Poznámka
Toto téma se týká pouze verze 1 spravovaných rozšíření jazyka C++. Tato syntaxe by měla sloužit pouze k udržování kódu verze 1. Viz Classes and Structs (C++ Component Extensions) informace o použití ekvivalentní funkce v nové syntaxi.
Deklaruje třídu být __value typu.
Syntaxe
__value
class-specifier
__value
struct-specifier
__nogc
array-specifier
__nogc
pointer-specifier
Poznámky
A __value Typ se liší od __gc typy v tomto __value proměnné typu přímo obsahují příslušná data, zatímco spravované proměnné přejděte na svá data, která je uložena v haldě běžné language runtime.
Platí následující podmínky __value typy:
__value Rozhraní nelze použít klíčové slovo.
A __value typu může dědit z libovolný počet rozhraní a nemůže dědit z jiných typů nebo __value typy.
A __value podle definice je zapečetěná typu. Další informace naleznete v tématu __sealed.
Je možné použít __value Zadejte všude, kde je povoleno spravovaného typu.
Poznámka
__value Klíčové slovo není povoleno, pokud se používá s __abstract klíčové slovo.
A __value Typ může být explicitně připojena k System::Object ukazatele. To se označuje jako zabalení.
Následující pokyny se vztahují k vložení typu hodnoty uvnitř __nogc Typ:
Typ hodnoty musí mít LayoutSequential nebo LayoutExplicit.
Typ hodnoty nemohou obsahovat členy ukazatel gc.
Hodnota typu nemůže být soukromé datové členy.
Ve spravovaných rozšíření jazyka C++ jsou ekvivalenty třída jazyka C# a struktura jazyka C#:
spravovaná rozšíření pro C++ |
C# |
Další informace |
---|---|---|
__gc – struktura - nebo - __gc – třída |
třída |
třídy – klíčové slovo |
__value – struktura - nebo - __value – třída |
struct |
Struktura – klíčové slovo |
Příklad
V následujícím příkladu __value typu (V) je deklarována a poté dva výskyty __value manipuluje s typu:
// 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
}