在While循环中使用1 == 1或true

时间:2015-09-24 15:10:56

标签: c#

我最近遇到了一个使用1 == 1而不是true的while语句。

示例:

while (1 == 1) 
{
   // Do something
}

而不是:

while (true)
{
   // Do something
}

它们看起来都是正确的并且生成相同的结果但是我想知道(除了为什么开发人员会使用1 == 1而不是真正的样式/习惯)从编译器的角度来看,这有什么影响,是使用比较运算符而不是true会有更大的开销吗?

1 个答案:

答案 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

任何一种选择都是开发者纯粹的风格偏好。