为什么生成的IL代码以Nop开头?

时间:2011-01-04 03:22:50

标签: .net il nop

我正在浏览我的一个程序集的某些IL(通过ILDasm),我注意到我的所有方法都以 nop 指令开头。

有谁知道为什么会这样?

1 个答案:

答案 0 :(得分:34)

程序集是在调试模式下编译的。 Nop指令不做任何事情(即没有副作用),但作为放置断点的方便指令。

提示

如果你需要一个额外的断点用于调试目的,你可以通过添加一对空括号来强制在Debug构建中包含Nop,例如。

_grid.PreviewMouseRightButtonDown += (sender, e) =>
{
    _isRightMouseDown = true;

    RowColumnIndex cell = _grid.PointToCellRowColumnIndex(e);
    {} //<------ Adding a Nop allows a breakpoint here.
};