對於一個簡單的方法,沒有局部變量像MethodInfo.GetMethodBody以下MethodBody.LocalVariables計數是混淆
public static int Test1(short i, long j)
{
j = i + j;
switch (j)
{
case 1:
j = 2;
break;
default:
j = 11;
break;
}
return j;
}
計數()。LocalVariables.Count = 2爲什麼? 添加另一個switch語句,計數變爲3爲什麼?
public static int Test1(short i, long j)
{
j = i + j;
switch (j)
{
case 1:
j = 2;
break;
default:
j = 11;
break;
}
switch (i)
{
case 1:
j = 2;
break;
default:
j = 11;
break;
}
return j;
}
沒有定義局部變量。那麼,爲什麼2和3. 另外,如果另一個開關語句與j保持計數在2.
使用[ILdasm](http://msdn.microsoft.com/en-us/library/f7dy01k1.aspx)或任何其他IL反彙編程序,並找出變量的用途。 – dtb 2012-03-17 00:35:46
由於將'long'('j')隱式轉換爲'int'(返回值),所以這甚至沒有編譯。 – 2012-03-17 00:37:57
編譯器缺陷的位,它添加它實際上不使用的局部變量。這些當地人很常見。 – 2012-03-17 01:41:54