2011-07-18 52 views
3

我讀過C++/CLI ref class等價於C#類。但是,我看到每個課程中的this之間存在差異。C++/CLI ref類和C#類之間的區別

編輯:我從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 = 系統:對象^我的預期或希望!!)


我希望this要像C#示例,其中指出thisMyClass型。但是,C++/CLI ref類聲明它的類型爲Object ..這絕對不是我想要的。 (這使得在各種情況下很困難,例如在C++函數中投射)。

所以我的問題是,(兩個部分):

一)爲什麼這些類與this行爲不同?

b)如何讓我的C++/CLI ref類具有正確的類型this

感謝您的提前預訂!

+1

如何檢查'this'是什麼類型? – svick

+0

你沒有提供任何相關的代碼,告訴我們你是如何使用這個''''' –

+0

@svick:從Visual Studio 2010的當地人 – developer

回答

2

你在調試器中看到的是基類的名稱 - 在這種情況下是Object^。將MyClass的基類更改爲其他內容,您將看到我的意思。

Locals window

需要注意的是最右邊的列顯示的類型。

+0

我的看起來有些不同(只有兩個層次......'this'和'System :: Object ^'但是你是對的,類型是不同的。它讀取MyNamespace :: MyClass ^'但不幸的是我仍然得到嘗試投射時不正確的類型..但我想這不是'這個'的問題。 – developer