Condividi tramite


__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.Per informazioni sull'utilizzo della funzionalità equivalente nella nuova sintassi, vedere Classi e struct (Estensioni del componente C++).

Dichiara un tipo __gc.

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