Разница между классом 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??



Заранее спасибо за потраченное время!

547   1  

1 ответ:

То, что вы видите в отладчике, является именем базового класса - в данном случае Object^. Измените базовый класс MyClass на что-то другое, и вы увидите, что я имею в виду.

Окно местных жителей

Обратите внимание, что самый правый столбец отображает тип.

Comments

    Ничего не найдено.