__nogc
Nota
Questo argomento si applica solo alla versione 1 delle estensioni gestite per C++.Questa sintassi deve essere utilizzata solo per gestire il codice della versione 1.Nella nuova sintassi, non è necessario contrassegnare in modo esplicito un tipo come non gestito.
Dichiara in modo esplicito un tipo non gestito.
__nogc class-specifier
__nogc struct-specifier
__nogc interface-specifier
__nogc array-specifier
__nogc pointer-specifier
__nogc new
Note
La parola chiave __nogc viene utilizzata per specificare in modo esplicito che un oggetto viene allocato nell'heap C++ standard. Questa parola chiave è facoltativa. Se non si specifica __gc o __nogc prima della dichiarazione di classe, viene impostato in modo predefinito su __nogc.
Gli oggetti di questo tipo sono simili a oggetti C++ standard in quanto vengono allocati dall'heap C++ standard e non sono soggetti alle limitazioni di un oggetto gestito.
La parola chiave __nogc viene inoltre utilizzata quando viene allocato in modo esplicito un oggetto di un tipo __value nell'heap C++ standard.
// keyword__nogc.cpp
// compile with: /clr:oldSyntax
#using <mscorlib.dll>
__value struct V {
int i;
};
int main() {
V * v = __nogc new V;
v->i = 10;
delete v;
}
Nota
La parola chiave __nogc può essere inoltre applicata ai tipi matrice e puntatore.
Un puntatore gc non può essere membro di una classe __nogc. Vedere __value per indicazioni su come incorporare un tipo di valore in una classe __nogc.
Esempio
Nell'esempio seguente, viene dichiarata una classe non gestita (X) viene inoltre creata un'istanza dell'oggetto che viene in seguito modificato:
// keyword__nogc_2.cpp
// compile with: /clr:oldSyntax
#using <mscorlib.dll>
using namespace System;
__nogc class X {
public:
int i;
};
int main() {
X* x; // declares an unmanaged pointer of type X
x = new X(); // creates unmanaged object of type X on the C++ heap
Console::WriteLine(x->i);
x->i = 4; // modifies unmanaged object
Console::WriteLine(x->i);
delete x; // call C++ delete operator to clean up resource
}