Я читал, что C ++ / CLI ref class
эквивалентен классу C #. Тем не менее, я вижу разницу между this
в каждом классе.
РЕДАКТИРОВАТЬ: я получил 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
?
б) как получить, чтобы мой класс C ++ / CLI ref имел правильный тип в this
??
Спасибо за ваше время заранее!