__nogc
注意事項 |
---|
本主題僅適用於第 1 版的 Managed Extensions for C++。這個語法只應該用於維護第 1 版的程式碼。在新語法中,您不需要明確地標記為 unmanaged 型別。 |
明確宣告不受管理的型別。
__nogc class-specifier
__nogc struct-specifier
__nogc interface-specifier
__nogc array-specifier
__nogc pointer-specifier
__nogc new
備註
__nogc關鍵字用來明確地指定物件在標準的 C++ 堆積上配置。 此關鍵字是選擇性的。 如果您未指定__gc或__nogc的類別宣告中,它會預設為__nogc。
因為它們會從標準的 C++ 堆積配置並不會受到 managed 物件的限制,這種類型的物件很類似標準的 C++ 物件。
__nogc __Value 型別的物件明確地在標準的 C++ 堆積上配置時,也會使用關鍵字:
// 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類別。 請參閱 __value ] 內嵌在實值型別, __nogc類別。
範例
在下列範例中,宣告不受管理的類別 (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
}