昨天我在我的C#代码中发现了这个奇怪的行为:Stacks=newStack();s.Push(1);//stackcontains[1]s.Push(2);//stackcontains[1|2]s.Push(3);//stackcontains[1|2|3]s.Push(s.Pop()*0);//stackshouldcontain[1|2|0]Console.WriteLine(string.Join("|",s.Reverse()));我假设程序会打印1|2|0但实际上它打印了1|2|3|0。查看生成的IL代码(通过ILSpy),您可以看到s.Pop()*0被优化为简单的0://