.net - 某些 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^ 之间的含义。谢谢。
解决方案
'hat' 运算符简而言之就是 C++/CLI 版本的指针。它不是传递值,而是传递对象在内存中的位置。它的行为类似于指针,但允许 .Net 跟踪您的对象。如果它注意到对象不再被跟踪,垃圾收集器将删除该对象。
有关“帽子”运算符的更多信息: https ://docs.microsoft.com/en-us/cpp/extensions/handle-to-object-operator-hat-cpp-component-extensions?view=vs-2019
推荐阅读
- sql - 如何对一列进行小计并将总计保留在另一列中以获得两者之间的差异
- php - 复杂的 Xpath 获取除某些特定类属性之外的所有值
- react-native - 反应本机文本输入从另一个文本输入中获取值
- django - 注释来自 Django RelatedManager 的中间模型的字段
- c# - WinForms 上的 SignalR - 无法连接到除 127.0.0.1 之外的任何地址
- python - Python:在另一个包中导入一个包而不使用完整路径
- tsql - 具有特殊格式的 TSQL 完全连接
- wxpython - 在 env 中安装 wxPython 时已安装 Python-Config 但未找到
- sql - 标准 BigQuery Unnest 和 JOIN 问题
- python - 如何获取列表中某些索引值的第一个?