Short-circuit evaluation is a process whereby the value of an expression is determined without evaluating all of the operands and/or operators.
C# offers both short-circuiting and non-short-circuiting boolean operators (Shamseer, 2017):
- short-circuiting operators
- conditional OR,
||
- conditional AND,
&&
- conditional OR,
- non-short-circuiting operators
- logical OR,
|
- logical AND,
&
- logical OR,
Here is an example demonstrating the differences between them
bool Condition1()
{
Console.WriteLine("\tCondition 1 is evaluated");
return false;
}
bool Condition2()
{
Console.WriteLine("\tCondition 2 is evaluated");
return true;
}
Console.WriteLine("--- Conditional operators");
Console.WriteLine();
Console.WriteLine("Condition1() && Condition2()");
if (Condition1() && Condition2())
{
// only Condition 1 is evaluated
}
Console.WriteLine();
Console.WriteLine("Condition2() || Condition1()");
if (Condition2() || Condition1())
{
// only Condition 2 is evaluated
}
Console.WriteLine();
Console.WriteLine("Condition1() || Condition2()");
if (Condition1() || Condition2())
{
// both are evaluated
}
Console.WriteLine();
Console.WriteLine("--- Logical operators");
Console.WriteLine();
Console.WriteLine("Condition1() & Condition2()");
if (Condition1() & Condition2())
{
// only Condition 1 is evaluated
}
Console.WriteLine();
Console.WriteLine("Condition1() | Condition2()");
if (Condition1() | Condition2())
{
// both are evaluated
}
The output:
Condition1()
returnsfalse
, whileCondition2()
returnstrue
--- Conditional operators
Condition1() && Condition2()
Condition 1 is evaluated
Condition2() || Condition1()
Condition 2 is evaluated
Condition1() || Condition2()
Condition 1 is evaluated
Condition 2 is evaluated
--- Logical operators
Condition1() & Condition2()
Condition 1 is evaluated
Condition 2 is evaluated
Condition1() | Condition2()
Condition 1 is evaluated
Condition 2 is evaluated
Live-code example
References
- Shamseer. (2017, January 19). Short-Circuit Evaluation In C#. Retrieved from https://www.c-sharpcorner.com/article/short-circuit-evaluation-in-c-sharp/