2013-06-19 42 views

回答

8

Int32.MaxValue存儲在編譯的時候,實際上你的代碼將在編譯時被轉換爲Convert.ToDouble(0x7FFFFFFF)。等效IL爲:

ldc.i4  FF FF FF 7F 
call  System.Convert.ToDouble 

該值也被保存,因此可以在運行時通過反射來檢索。

但是,Convert.ToDouble是一個僅在運行時進行評估的函數。

As minitech暗示,(double)Int32.MaxValue在編譯時被評估。等效IL爲:

ldc.r8  00 00 C0 FF FF FF DF 41 
+1

您會推薦瞭解有關IL的任何資源?我目前一無所知 –

+1

@ThomasFarley可能沒有比編寫一些C#更好的學習方式,下載一個免費的反編譯器,如ILSpy,並查看IL :) –

+3

LINQPad是一個很好的查看IL –