我读过 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
的基类更改为其他内容,您就会明白我的意思。
请注意,最右边的列显示类型。
关于c# - C++/CLI ref 类和 C# 类之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6739831/