2013-06-19 14 views

Odpowiedz

8

Stała Int32.MaxValue jest przechowywana w czasie kompilacji, a Twój kod zostanie przekonwertowany na Convert.ToDouble(0x7FFFFFFF) podczas kompilacji. Odpowiednikiem IL jest:

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

Wartość ta jest również zapisywana, aby można ją było odzyskać podczas pracy poprzez odbicie.

Jednak Convert.ToDouble to funkcja, która jest oceniana tylko w czasie wykonywania.

Jako minitech sugeruje, (double)Int32.MaxValue jest oceniany podczas kompilacji. Odpowiednikiem IL jest:

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

Jakieś zasoby, które poleciłbyś, aby dowiedzieć się o IL? Obecnie nic o tym nie wiem –

+1

@ThomasFarley Prawdopodobnie nie ma lepszego sposobu na naukę niż napisanie C#, pobranie darmowego dekompilatora takiego jak ILSpy, i zobacz IL :) –

+3

LINQPad dobrze jest zobaczyć IL –

Powiązane problemy