c# - C++/CLI ref 类和 C# 类之间的区别

标签 c# c++-cli

我读过 C++/CLI ref class 等同于 C# 类。但是,我发现每个类中的 this 之间存在差异。

编辑:我从 Visual Studio 2010 的本地人那里获得了 this。 (此外,我注意到在执行完全相同的转换时在编译时存在差异 - C++/CLI 类给出了一个错误,指出它无法将 Object^ 转换为 MyClass^,而使用 C# 类进行转换在编译时不会产生任何错误)。

C#类:

namespace MyNamespace
{

   public class MyClass
   {    
       public MyClass()
           {
               //Do something
           }
   }
}

this = MyNamespace.MyClass(我所期望和想要的!)


C++/CLI ref class:

namespace MyNamespace
{

   public ref class MyClass
   {    
       public:
           MyClass::MyClass()
           {
               //Do something
           }
   }
}

this = System::Object^(不是我所期望或想要的!!)


我希望 this 类似于 C# 示例,它声明 this 的类型为 MyClass。但是,C++/CLI ref 类声明它的类型为 Object.. 这绝对不是我想要的。 (这使得在各种情况下变得困难,例如在 C++ 函数中进行强制转换)。

所以我的问题是(两部分):

a) 为什么这些类的行为与 this 不同?

b) 如何让我的 C++/CLI 引用类在 this 中具有正确的类型??

提前感谢您抽出时间!

最佳答案

您在调试器中看到的是基类的名称 - 在本例中为 Object^。将 MyClass 的基类更改为其他内容,您就会明白我的意思。

Locals window

请注意,最右边的列显示类型。

关于c# - C++/CLI ref 类和 C# 类之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6739831/

相关文章:

c# - MVC 脚手架不加载模型或上下文

c# - 如何在 C++/CLI 中将 C++ short* 传递给托管 C# 程序集

c# - 包装 OpenCV C++ 以便与 C# 一起使用

visual-studio-2012 - "error C2228: left of ' .ToString ' must have class/struct/union"

c# - 如何使用 DropDownList.text 选择

c# - 如何在 View 中设置多个 MVC 下拉列表的选定值而不为每个下拉列表传递唯一的选择列表

c# - 批量插入在 Azure SQL Server 中无法正常工作

visual-c++ - Visual C++ (.NET 4.0) - 将自定义结构序列化/复制到字节数组以通过 NetworkStream 发送

visual-c++ - 是否可以将 boost::serialization 与托管类一起使用?

C# - 传递 3 个参数与传递具有 30 个属性的对象 -