我最近遇到了一个使用1 == 1而不是true的while语句.
例:
while (1 == 1)
{
// Do something
}
Run Code Online (Sandbox Code Playgroud)
代替:
while (true)
{
// Do something
}
Run Code Online (Sandbox Code Playgroud)
它们看起来都是正确的并产生相同的结果但是我想知道(除了为什么开发人员会使用1 == 1而不是真实的样式/习惯)从编译器的角度来看这有什么影响,是否有更大的使用比较运算符代替true的开销?
Dav*_*d L 14
没有区别.编译器会将它们优化为相同的IL.
1 == 1
IL_0000: nop
IL_0001: br.s IL_0005
IL_0003: nop
IL_0004: nop
IL_0005: ldc.i4.1
IL_0006: stloc.0 // CS$4$0000
IL_0007: br.s IL_0003
Run Code Online (Sandbox Code Playgroud)
真正
IL_0000: nop
IL_0001: br.s IL_0005
IL_0003: nop
IL_0004: nop
IL_0005: ldc.i4.1
IL_0006: stloc.0 // CS$4$0000
IL_0007: br.s IL_0003
Run Code Online (Sandbox Code Playgroud)
任何一种选择都是开发者纯粹的风格偏好.