__gc
Publicado: abril de 2016
Dica
Este tópico se aplica apenas a versão 1 de Managed Extensions for C++. Esta sintaxe só deve ser usada para manter o código da versão 1. Consulte Classes and Structs (C++ Component Extensions) para obter informações sobre como usar a funcionalidade equivalente na nova sintaxe.
Declara um tipo GC.
Sintaxe
__gc
array-specifier
__gc
class-specifier
__gc
struct-specifier
__gc
interface-specifier
__gc
pointer-specifier
__gc new
Comentários
Um tipo GC é uma extensão da linguagem C++ que simplifica a programação do .NET Framework, fornecendo recursos como interoperabilidade e coleta de lixo.
Dica
Cada função de membro de uma classe GC abstrata deve ser definida, a menos que a função de membro é essencialmente virtual.
Nas extensões gerenciadas para C++, os equivalentes a uma classe c# e uma estrutura c# são:
Extensões gerenciadas do C++ |
C# |
Para obter mais informações |
---|---|---|
classe de struct ou GC GC |
classe |
classe palavra-chave |
struct Value ou classe Value |
struct |
struct palavra-chave |
Exemplo
No exemplo a seguir, uma classe gerenciada (X) é declarada com um membro de dados públicos, que é manipulado por meio de um ponteiro gerenciado:
// 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);
}
Saída
0
4
5