2014-03-31 61 views

回答

5

您正在要求調試器爲您評估表達式。它現在就像一個編譯器,將您輸入的表達式轉換爲代碼並運行該代碼以顯示結果。它認爲0xff000000類型的文字,這是一個公平的呼叫,因爲int不能存儲該值,它大於Int32.MaxValue。因此,評估>>運營商參數,i值轉換爲第一。結果當然也是

。因爲沒有以其它方式轉換爲較小的類型,像您在代碼那樣,調試器顯示結果與64位,16位十六進制數字長(當切換到十六進制輸出)。

其他表達式的行爲不如此,其中使用的文字小於Int32.MaxValue,因此使用int參數進行評估,產生32位結果,8位十六進制數字。

值得注意的或許是調試器的表達式求值接近,但不等同於C#編譯器的評估。這裏不是問題,但在某些情況下可能很重要。 Roslyn項目終於出貨時,這可能會有所改變。

+0

謝謝,像往常一樣的詳細答案:D – Aybe

相關問題