如何在执行相同功能时避免在C#中进行短路评估

如何在执行相同功能时避免在C#中进行短路评估,c#,operators,short-circuiting,C#,Operators,Short Circuiting,在C#中是否有任何操作符,通过它我可以避免短路评估并遍历所有条件 说 它应评估所有条件,而不考虑获得的输出。评估后,根据获得的结果继续最后一个条件 只需使用一个条形图,无论第一个结果的结果如何,这都将计算两个参数 if(txtName.Text.xyz() | txtLastName.Text.xyz()) { } 您也可以使用AND执行相同的操作,即,您可以使用单个符号AND替换&&,以获得与上述相同的效果: if(txtName.Text.xyz() & txtLastName.T

在C#中是否有任何操作符,通过它我可以避免短路评估并遍历所有条件


它应评估所有条件,而不考虑获得的输出。评估后,根据获得的结果继续最后一个条件

只需使用一个条形图,无论第一个结果的结果如何,这都将计算两个参数

if(txtName.Text.xyz() | txtLastName.Text.xyz()) { }
您也可以使用AND执行相同的操作,即,您可以使用单个符号AND替换
&&
,以获得与上述相同的效果:

if(txtName.Text.xyz() & txtLastName.Text.xyz()) { } // Both sides will be called
只需使用一个酒吧

if(txtName.Text.xyz() | txtLName.Text.xyz())
{

}

你为什么要对同一个条件进行两次评估?@Adrian:举个例子吧。xyz函数可以包含任何类型的定义,可以是委托或其他。很抱歉,这不是正确的方法。这是调用一个不同的操作,按位and/or,它需要执行第二个函数来返回适当的值。如果您返回某些数值,这会造成奇怪的结果。@BennyMackney有一个例子吗?执行类似var a=funcA()的操作;var b=funcB();如果(a | | b)能让你更清楚地知道你想做什么。如果您使用单符号版本(按位and/or)执行此操作,您会感到奇怪,尤其是使用and(&)。例如,(4&8)==0,这是false,而4&8是true。现在C#停止了这一点(因为您正在将int转换为bool,而没有显式地强制转换),但其他语言(例如Javascript)的操作会有所不同。例如,在我的JS控制台中:if(4&8){console.log('this should exec right?');}else if(4&8){console.log(“error!”);}VM321:1 error@BennyMackney这是一个C#问题。OP询问如何在if语句中调用这两个方法,这个答案满足这一点。虽然这个答案是正确的,但我同意这不是最佳实践。最佳实践是分别调用这两个方法以提高可读性,然后将它们的结果合并到if语句中。Ie bool answerA=funcA();bool answerB=funcA()。如果(回答&&answerB){//做点什么}。我知道。但是Javascript也被提到了,这是一个评论,而不是一个实际的答案,所以我是在更广泛的意义上说的。
if(txtName.Text.xyz() | txtLName.Text.xyz())
{

}