據微軟稱,在C++在Visual Studio中的同一運營商C++ 2010 http://msdn.microsoft.com/en-us/library/x04xhy0h.aspx
但是,看看下面的構建:爲什麼操作員不能在C++ - CLI中工作?
int^ number = 32;
if (number < 100)
MessageBox::Show("The number is not greater than 100");
構建失敗 '<':「系統::的Int32^「不限定此運算符或轉換到類型接受的預先規定的操作
if (number <= 100)
MessageBox::Show("The number is not greater than 100");
建立失效 」 < =「:」 SYSTE m :: Int32 ^'未定義該運算符或轉換爲預定義運算符可接受的類型
if (number == 32)
MessageBox::Show("The is equal to 32");
構建成功...但是不顯示消息。
if (number = 32)
MessageBox::Show("The is equal to 32");
構建成功..顯示消息。 (爲什麼?等號的運算符是==)
爲什麼會發生這種情況?
.net確實爲句柄定義了運算符...用於引用類型。但這是一種價值類型,沒有理由去處理它。 –
並且不,它不會比較地址與32 ... 32個盒子,然後檢查兩個盒子的參考身份,這將始終是錯誤的。 –
@BenVoigt - 有趣...雖然我知道C++和.NET,但我承認我並不完全熟悉C++/CLI - 所以我實際上已經測試了上述聲明,並將'number'與整數地址進行了比較通過檢查(例如'number == 0x1234abcd')看起來確實產生了'true'。必須做一些疏忽。 – JimmiTh