__value
注意事項 |
---|
本主題僅適用於第 1 版的 Managed Extensions for C++。這個語法只應該用於維護第 1 版的程式碼。請參閱類別和結構 (管理)如有關在新語法中使用的相等功能。 |
宣告為 __value 的型別類別。
__value class-specifier
__value struct-specifier
__nogc array-specifier
__nogc pointer-specifier
備註
A __value型別不同於__gc中的型別__value型別變數直接包含其資料,而受管理的變數會指向它們儲存在通用語言執行階段堆積的資料。
下列條件適用於__value型別:
__value關鍵字不能套用到介面。
A __value型別可以繼承自任何數目的介面,而且不可以繼承自其他型別或__value型別。
A __value原本就已密封型別。 如需詳細資訊,請參閱 __sealed。
有效使用__value鍵入 managed 型別允許的全螢幕輸入。
注意事項 |
---|
__value搭配使用時,不允許關鍵字__abstract關鍵字。 |
A __value型別可以明確地連線到 System::Object 指標。 這就是所謂的 boxing。
若要內嵌在實值型別可套用下列準則__nogc型別:
實值型別必須有 LayoutSequential 或 LayoutExplicit。
實值型別不能有 gc 指標成員。
實值型別不能有私用資料成員。
在 [Managed Extensions for C++ 到 C# 類別和 C# 結構的對等用法如下所示:
Managed Extensions for C++ |
C# |
如需詳細資訊 |
---|---|---|
__gc 結構 -或- __gc 類別 |
class |
類別關鍵字 |
__value 結構 -或- __value 類別 |
struct |
結構關鍵字 |
範例
在下列範例中, __value型別 (V) 宣告,然後兩個執行個體__value管理型別:
// keyword__value.cpp
// compile with: /clr:oldSyntax
#using <mscorlib.dll>
__value struct V {
int m_i;
};
int main() {
V v1, v2;
v1.m_i = 5;
v2 = v1; // copies all fields of v1 to v2
v2.m_i = 6; // does not affect v1.m_I
}