我注意到C#编译器ret在void方法结束时生成一条指令:
.method private hidebysig static void Main(string[] args) cil managed
{
// method body
L_0030: ret
}
Run Code Online (Sandbox Code Playgroud)
我已经为.NET编写了一个编译器,无论我是否发出一个ret语句,它都可以工作(我已经检查了生成的IL,而且确实没有在那里).
我只是想知道:是否需要ret返回void任何方法?它似乎对堆栈没有任何作用,所以我认为这对于void方法来说完全没有必要,但是我想听听那些对CLR有更多了解的人的消息?