我读过C ++ / CLI ref class
等同于C#类。但是,我发现每个班级this
之间存在差异。
编辑:我从Visual Studio 2010的本地人那里获得了this
。 (另外,我注意到在编译时执行完全相同的转换时的差异 - C ++ / CLI类给出了一个错误,指出它无法将Object ^转换为MyClass ^,而使用C#类进行转换在编译时不会产生错误)。 / p>
C#class:
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
= 系统::对象^ (不我所期望或想要的!)
我希望this
与C#示例类似,它表明this
的类型为MyClass
。但是,C ++ / CLI ref类声明它的类型为Object
..这绝对不是我想要的。
(这使得在各种情况下都很困难,例如在C ++函数中进行转换)。
所以我的问题是(两部分):
a)为什么这些类与this
表现不同?
b)如何让我的C ++ / CLI ref类在this
中具有正确的类型?
感谢您提前的时间!
答案 0 :(得分:2)
您在调试器中看到的是基类的名称 - 在本例中为Object^
。将MyClass
的基类更改为其他内容,您将看到我的意思。
请注意,最右侧的列显示类型。