首页 > 解决方案 > 某些 Enum E 的 E 和 E^ 有什么区别?(C++/CLI)

问题描述

假设我定义了一个枚举 E 如下:

#pragma managed

namespace MyNamespace
{
  public enum class E
  {
    X = 0,
    Y = 1,
    Z = 2
  };
}

以下两个方法签名有什么区别?

#pragma managed

namespace MyNameSpace
{
  public MyClass
  {
      public void method1(E an_enum) {}

      public void method2(E^ an_enum) {}
   };
}

我试图了解使用 E 与 E^ 之间的含义。谢谢。

标签: .netc++-cli

解决方案


'hat' 运算符简而言之就是 C++/CLI 版本的指针。它不是传递值,而是传递对象在内存中的位置。它的行为类似于指针,但允许 .Net 跟踪您的对象。如果它注意到对象不再被跟踪,垃圾收集器将删除该对象。

有关“帽子”运算符的更多信息: https ://docs.microsoft.com/en-us/cpp/extensions/handle-to-object-operator-hat-c​​pp-component-extensions?view=vs-2019


推荐阅读