Logical operators are special symbols that allow us to combine conditions and perform operations based on the result of those conditions. The most common logical operators in C# are:
| Operator | Name | Description |
|---|---|---|
&& | AND | Returns true if both operands are true |
|| | OR | Returns true if at least one of the operands is true |
! | NOT | Negates the value |
If you want to learn more about Logical Operators
check the Introduction to Programming Course read more
List of logical operators
Logical AND (&&)
The logical AND operator allows us to evaluate two conditions and returns true if both conditions are true, or false otherwise. For example:
bool condition1 = true;
bool condition2 = false;
bool result = condition1 && condition2; // result will be falseLogical OR (||)
The logical OR operator allows us to evaluate two conditions and returns true if at least one of the conditions is true, or false otherwise. For example:
bool condition1 = true;
bool condition2 = false;
bool result = condition1 || condition2; // result will be trueLogical NOT (!)
The logical NOT operator allows us to invert the value of a condition. If the condition is true, it returns false, and if the condition is false, it returns true. For example:
bool condition = true;
bool result = !condition; // result will be falseUsage Examples
Combination with &&
The && (logical AND) operator is used to combine two boolean expressions. The entire expression evaluates to true only if both sub-expressions are true.
int age = 25;
bool hasLicense = true;
bool canDrive = (age >= 18) && hasLicense; // trueCombination with ||
The || (logical OR) operator is used to combine two boolean expressions. The entire expression evaluates to true if at least one of the sub-expressions is true.
bool isRaining = false;
bool isCold = true;
bool wantsToStayHome = isRaining || isCold; // trueNegation with !
The ! (logical NOT) operator is used to negate a boolean expression. The entire expression evaluates to true if the sub-expression is false, and vice versa.
bool isDay = true;
bool isNight = !isDay; // falseCombining logical operators
It is possible to combine several logical operators in a single expression to create more complex conditions. For example:
int number = 15;
bool isMultipleOf3 = (number % 3 == 0);
bool isMultipleOf5 = (number % 5 == 0);
bool isMultipleOf3_or_5 = isMultipleOf3 || isMultipleOf5; // true, since 15 is a multiple of 3
bool isMultipleOf3_and_5 = isMultipleOf3 && isMultipleOf5; // false, since 15 is not a multiple of both 3 and 5
bool isNotMultipleOf3 = !isMultipleOf3; // falsePrecedence of logical operators
When combining multiple logical operators in an expression, it is important to understand their precedence to evaluate the expression correctly.
The precedence of logical operators in C# follows this order:
!(NOT)&&(AND)||(OR)
Therefore, in an expression with && and ||, && is evaluated before ||. However, it is advisable not to abuse this when writing our code. Don’t hesitate to use parentheses if it improves readability.
For example:
int a = 5;
int b = 10;
int c = 15;
bool result = (a > b) || (b < c) && (a == c); // true
// Evaluated as: (a > b) || ((b < c) && (a == c))To improve clarity, sometimes it is advisable to put parentheses even if they are not necessary, if that improves readability.
bool result = (a > b) || ((b < c) && (a == c)); // true