__gc
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. Vedere Classes and Structs (C++ Component Extensions) per informazioni sull'utilizzo della funzionalità equivalente nella nuova sintassi.
Dichiara un tipo __gc.
Sintassi
__gc
array-specifier
__gc
class-specifier
__gc
struct-specifier
__gc
interface-specifier
__gc
pointer-specifier
__gc new
Note
Un tipo __gc è un'estensione del linguaggio C++ che semplifica la programmazione in .NET Framework fornendo funzionalità quali interoperabilità e Garbage Collection.
Nota
Ogni funzione membro di una classe abstract __gc deve essere definita, a meno che non si tratti di una funzione virtuale pura.
Nelle estensioni gestite di C++ gli equivalenti di una classe e di uno struct C# sono i seguenti:
Estensioni gestite per C++ |
C# |
Per altre informazioni |
---|---|---|
struct __gc o classe __gc |
classe |
Parola chiave class |
struct __value o classe __value |
struct |
parola chiave struct |
Esempio
Nell'esempio seguente una classe gestita (X) è dichiarata con un membro dati pubblico, che viene modificato tramite un puntatore gestito:
// keyword__gc.cpp
// compile with: /clr:oldSyntax
#using <mscorlib.dll>
using namespace System;
__gc class X {
public:
int i;
int ReturnInt() { return 5; }
};
int main() {
// X is a __gc class, so px is a __gc pointer
X* px;
px = new X; // creates a managed object of type X
Console::WriteLine(px->i);
px->i = 4; // modifies X::i through px
Console::WriteLine(px->i);
int n = px->ReturnInt(); // calls X::ReturnInt through px
Console::WriteLine(n);
}
Output
0
4
5