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

Sha*_*pta 12 c# operators short-circuiting

我们在C#中是否有任何操作员可以避免短路评估并遍历所有条件.

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

}

public static bool xyz(this TextBox txt)
{
//do some work.
return false;
}
Run Code Online (Sandbox Code Playgroud)

它应评估所有条件,而不考虑所获得的输出.并且在根据获得的结果评估最后条件之后继续.?

djd*_*d87 20

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

if(txtName.Text.xyz() | txtLastName.Text.xyz()) { }
Run Code Online (Sandbox Code Playgroud)

您也可以使用AND执行相同操作,即您可以&&使用单个&符替换以获得与上述相同的效果:

if(txtName.Text.xyz() & txtLastName.Text.xyz()) { } // Both sides will be called
Run Code Online (Sandbox Code Playgroud)

  • @BennyMackney这是一个C#问题。OP询问如何在if语句中调用这两个方法,而这个答案就满足了。虽然这个答案是正确的,但我同意这不是最佳实践。最佳实践是分别调用这两种方法以提高可读性,然后将其结果合并到if语句中。即bool answerA = funcA(); bool answerB = funcA()。if(answerA && answerB){//做某事}。 (2认同)

Chr*_*ney 6

只需使用一个酒吧;

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

}
Run Code Online (Sandbox Code Playgroud)