我在项目中遇到了一些代码片段。 老家伙取代了
if(!this.printHelper.PrepareDoc(printerName, report, this.PageBox != null)){
return;
}
带
if(this.printHelper.PrepareDoc(printerName, report, this.PageBox == null)){
return;
}
提高绩效。 这两个条件之间的实际差异是什么?
答案 0 :(得分:3)
这两个陈述完全不同。
this.PageBox != null
评估为boolean
,您正在参数列表中翻转该值,并调整相反的返回值。
如果函数返回值是传入的第三个参数的值,或者否定它,可能可能已经离开了。
答案 1 :(得分:0)
这两个陈述在逻辑上完全不同!
第一个语句if if块只会执行false,因为你反转'logical NOT'函数调用返回的布尔值 PrepareDoc ,第二个语句只有在执行时才会执行。
此外,第一个语句的最后一个参数被反转/翻转,因此传递给函数调用 PrepareDoc 的值是逻辑反转。
唯一的性能差异是在第一个语句和参数上翻转函数返回值的操作。