感谢您使用微软产品。这是一个已经知道的问题。我们可以在一些情况下重现它。这个问题是由于.NET生成的IL语言在源文件中没有对应的语句,所以Debuger就在源代码中高亮度显示了该语句的上一条。具体情况请您参阅下面的实例源代码和相应的IL文件://////////////// Source Code /////////////////////////////////using System;namespace ConsoleApplication2
{ class Class1
{
static void Main(string[] args)
{
int i; try

i = 1;
  
if(i == 0)
{
i++;
return;
} }
   
catch
{
return ;
  
} return;

}
}
}////////////////////////////////     在ILDasm中生成的IL文件     ///////////////////////////////.method private hidebysig static void  Main(string[] args) cil managed
{
  .entrypoint  // Code size       19 (0x13)
  .maxstack  2
  .locals init ([0] int32 i)  .try
  {
    IL_0000:  ldc.i4.1
    IL_0001:  stloc.0
    IL_0002:  ldloc.0
    IL_0003:  brtrue.s   IL_000b
    IL_0005:  ldloc.0
    IL_0006:  ldc.i4.1
    IL_0007:  add
    IL_0008:  stloc.0
    IL_0009:  leave.s    IL_0012
    IL_000b:  leave.s    IL_0010
  }  // end .try  catch [mscorlib]System.Object 
  {
    IL_000d:  pop
    IL_000e:  leave.s    IL_0012
  }  // end handler  IL_0010:  br.s       IL_0012
  IL_0012:  ret} // end of method Class1::Main////////////////////////////////////////////////////////////////////////////
在上面的IL中,当 执行" IL_000b:  leave.s    IL_0010"时,并没有源代码和他相对应。Debugger就把该指令上面最近的,并且具有对应源代码的指令高亮度显示出来。在上面的例子中,就是"IL_0009:  leave.s    IL_0012", 他对应于源代码中的try中的return.您可以把return替换为别的语句,在step into中,仍然会被高亮度显示, 尽管它不会被执行。相信这个问题会被尽快修复。在当前情况下,如果您在debug的过程中碰到这种情况,请您参阅IL代码。它对我们的debug很有帮助。希望上面的信息对您有所帮助。-微软全球技术中心 本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。为了为您创建更好的讨论环境,请参加我们的用户满意度调查(http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。