__nogc

备注

本主题仅适用于 C++ 托管扩展的版本 1。此语法应仅用于维护版本 1 代码。在新语法中,不需要显式将类型标记为非托管。

显式声明非托管类型。

__nogc class-specifier 
__nogc struct-specifier 
__nogc interface-specifier 
__nogc array-specifier 
__nogc pointer-specifier 
__nogc new

备注

__nogc 关键字用于显式指定在标准 C++ 堆中分配对象。 此关键字是可选的。 如果在类声明前未指定 __gc 或 __nogc,则它默认为 __nogc。

此类型的对象类似于从标准 C++ 堆分配且不受托管对象限制的标准 C++ 对象。

在标准 C++ 堆中显式分配 __value 类型的对象时,也可使用 __nogc 关键字。

// 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;
}

备注

__nogc 关键字还可应用于数组和指针类型。

gc 指针不能是 __nogc 类的成员。 有关在 __nogc 类中嵌入值类型的指导信息,请参阅 __value

示例

在下面的示例中,声明了非托管类 (X) 并且实例化和修改了对象:

// 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
}