__value

备注

本主题仅适用于托管扩展的 1 版 C++ 的。只应在此语法维护 1 版代码。有关使用等效功能的信息在新语法,请参见 类和结构 (托管)

声明类是 __value 类型。

__value class-specifier
__value struct-specifier
__nogc array-specifier
__nogc pointer-specifier

备注

__value 类型与 __gc 不同输入 __value 类型变量直接包含它们的数据,,而托管变量指向它们的数据,在公共语言运行时堆中存储。

以下条件应用于 __value 类型:

  • __value 关键字不能应用于接口。

  • __value 类型从任意数量的接口继承,而且不能从任何其他类型或 __value 类型继承。

  • __value 类型按照定义是密封的。 有关更多信息,请参见 __sealed

  • 其有效使用 __value 类型的任意位置托管类型允许的。

备注

__value 关键字不允许的,当使用 __abstract 关键字。

__value 类型可以显式连接到 系统:: 对象 指针。 这称为 " 装箱。

下列指南适用于嵌入 __nogc 类型内的值类型:

  • 值类型必须具有 LayoutSequentialLayoutExplicit

  • 值类型不能有 gc 指针成员。

  • 值类型不能具有私有数据成员。

在 C++ 托管扩展中,对于 C# 类的等效和 C# struct 如下所示:

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
}