我最近看到一段使用1 == 1而不是true的while语句。
例如:
while (1 == 1)
{
// Do something
}
不是:
while (true)
{
// Do something
}
它们似乎都是正确的并且会生成相同的结果,但我想知道(除了开发人员使用1 == 1而不是true之外 - 样式/习惯除外),从编译器角度来看,这对性能有什么影响,使用比较运算符是否会产生更大的开销?
我最近看到一段使用1 == 1而不是true的while语句。
例如:
while (1 == 1)
{
// Do something
}
不是:
while (true)
{
// Do something
}
它们似乎都是正确的并且会生成相同的结果,但我想知道(除了开发人员使用1 == 1而不是true之外 - 样式/习惯除外),从编译器角度来看,这对性能有什么影响,使用比较运算符是否会产生更大的开销?
它们没有区别。编译器会将它们优化为相同的中间语言。
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
任何选择使用其中一种方法而不是另一种方法,都完全是开发人员的风格偏好。1 == 1
的含义是“小心,这里可能有些奇怪”;while(true)
可能会被误认为是函数调用(例如 DoStuff(true)
)。
for(;;)
可以节省一些字节 ;) 对于 code golf 很有帮助。 - James Websterwhile (true)
来创建一个线程,我希望它一直运行直到整个程序停止。 - James Webster