共用方式為


__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型別:

  • 實值型別必須有 LayoutSequentialLayoutExplicit

  • 實值型別不能有 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
}