Разница между классом C++/CLI ref и классом C#
Я читал, что C++/CLI ref class эквивалентен классу C#. Однако я вижу разницу между this в каждом классе.
EDIT: я получил this из локальных файлов Visual Studio 2010. (Кроме того, я отметил разницу во время компиляции при выполнении точно такого же приведения - класс 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 = система:: объект^ (не то, что я ожидал или хотел!!)
Я ожидал бы, что this будет похож на пример C#, который утверждает, что this имеет тип MyClass. Однако класс C++/CLI ref утверждает, что он имеет тип Object.. А это определенно не то, чего я хочу.
(Это затрудняет работу в различных ситуациях, таких как приведение в C++ функция).
Итак, мой вопрос (две части):
А) почему эти классы ведут себя по-разному с
this?B) как сделать так, чтобы мой класс C++/CLI ref имел правильный тип в this??
Заранее спасибо за потраченное время!
1 ответ:
То, что вы видите в отладчике, является именем базового класса - в данном случае
Object^. Измените базовый классMyClassна что-то другое, и вы увидите, что я имею в виду.
Обратите внимание, что самый правый столбец отображает тип.

Comments