我最近遇到了一个使用1 == 1而不是true的while语句。
示例:
while (1 == 1)
{
// Do something
}
而不是:
while (true)
{
// Do something
}
它们看起来都是正确的并且生成相同的结果但是我想知道(除了为什么开发人员会使用1 == 1而不是真正的样式/习惯)从编译器的角度来看,这有什么影响,是使用比较运算符而不是true会有更大的开销吗?
答案 0 :(得分: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
真
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
任何一种选择都是开发者纯粹的风格偏好。