2009-08-16 67 views

回答

8

简短的回答返回值:一旦

龙答:

的代码被编译成以下的IL。您可以通过编译C#文件,然后在ILDASM(与Visual Studio一起分发)或.NET Reflector(可以显示多语言反汇编代码并具有详细说明的IL说明的工具提示)中打开它来自己尝试。

L_0008: ldloc.0 
L_0009: callvirt instance string [mscorlib]System.String::ToLowerInvariant() 
L_000e: stloc.2 
L_000f: ldc.i4.0 
L_0010: stloc.3 
L_0011: br.s L_0021 
L_0013: ldloc.2 
L_0014: ldloc.3 
L_0015: callvirt instance char [mscorlib]System.String::get_Chars(int32) 
L_001a: stloc.1 
L_001b: nop 
L_001c: nop 
L_001d: ldloc.3 
L_001e: ldc.i4.1 
L_001f: add 
L_0020: stloc.3 
L_0021: ldloc.3 
L_0022: ldloc.2 
L_0023: callvirt instance int32 [mscorlib]System.String::get_Length() 
L_0028: clt 
L_002a: stloc.s flag 
L_002c: ldloc.s flag 
L_002e: brtrue.s L_0013 

实际循环条件是在检查线以L_0021 L_002c再有在行L_002e如果不是所有字符都尚未处理时执行的跳跃。请注意,它跳转到ToLowerInvariant调用之后的L_0013。

2

一次......然后它遍历每个获得由呼叫