if(a == b)vs if(!(a!= b))之间的区别

时间:2018-02-01 09:48:35

标签: c# performance

我在项目中遇到了一些代码片段。 老家伙取代了

if(!this.printHelper.PrepareDoc(printerName, report, this.PageBox != null)){
    return;
}

if(this.printHelper.PrepareDoc(printerName, report, this.PageBox == null)){
    return;
}

提高绩效。 这两个条件之间的实际差异是什么?

2 个答案:

答案 0 :(得分:3)

这两个陈述完全不同。

this.PageBox != null评估为boolean,您正在参数列表中翻转该值,并调整相反的返回值。

如果函数返回值是传入的第三个参数的值,或者否定它,可能可能已经离开了。

答案 1 :(得分:0)

这两个陈述在逻辑上完全不同!

第一个语句if if块只会执行false,因为你反转'logical NOT'函数调用返回的布尔值 PrepareDoc ,第二个语句只有在执行时才会执行。

此外,第一个语句的最后一个参数被反转/翻转,因此传递给函数调用 PrepareDoc 的值是逻辑反转。

唯一的性能差异是在第一个语句和参数上翻转函数返回值的操作。