.net - 托管对象,为什么不会(^)。编译?

标签 .net visual-studio pointers c++-cli

我最近需要研究控制串行端口,因此我转向 .net。我想,因为我使用的是 Visual Studio,这很容易......我错了......

弄清楚“^”和“gcnew”的含义后,我偶然发现了“->”,我仍然找到了它意思是“(*).”(不知道这是由于我自己的无知)。

问题是这样的:

如果“->”相当于“(*).” 而“^”等价于“*

那么为什么“(^).”在输入时不会编译并弹出自动完成功能?或者我在这里遗漏了什么?

最佳答案

C++/CLI 中的帽子 (^) 和百分号 (%) 与星号 ( *)和 C++ 中的&符号(&)在类型中。

不过,^ 不用作运算符;你仍然使用*


(1) 请注意,它们不相同等价^% 用于垃圾收集堆上对象(即托管对象)的句柄和引用。 *& 用于指向 native C++ 对象的指针和引用(至少在大部分情况下)。

在使用 C++/CLI 编程时,您需要非常小心:永远不要忘记在单个源文件中使用两个完全不同的对象模型。 C++ 中创建和销毁对象的方式以及管理对象生命周期的方式与 .NET 中的工作方式完全不同。

关于.net - 托管对象,为什么不会(^)。编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6514487/

相关文章:

c# - WPF:关闭和打开窗口

javascript - 如何在 .NET Core 中的 View 类中使用 loadjsfile?

visual-studio - 为什么 Visual Studio 会禁用媒体按钮?

html - 单击按钮重定向到另一个 html 页面

c - 取消引用 ‘void *’ 指针和转换不起作用

c# - 使用 ExpertPDF 从 HTML 生成的 PDF 的质量差异

asp.net - 从 .aspx 页面直接到达 SessionId

visual-studio - 为什么在 VS 中从 Debug 更改为 Release 很慢?

c - c中的链表遍历

c++ - 将二维数组作为参数传递