C# > Core C# > Operators and Expressions > Logical Operators
Logical NOT Operator
This snippet demonstrates the use of the logical NOT operator (!) in C#. The NOT operator inverts the value of a boolean expression.
Code Demonstration
The code demonstrates the ! (NOT) operator.
The first if statement uses !isSunny to check if it's NOT sunny. If isSunny is false, then !isSunny will evaluate to true, and the code inside the if block will execute.
The second example combines an expression with the not operator. isWarm is false. Therefore, !isWarm is true and 'It's not warm enough' is printed to the console.
using System;
public class LogicalNotOperator
{
public static void Main(string[] args)
{
bool isSunny = false;
// Logical NOT (!): Inverts the boolean value
if (!isSunny)
{
Console.WriteLine("It's not sunny today.");
}
else
{
Console.WriteLine("It's a sunny day!");
}
int temperature = 15;
bool isWarm = temperature > 20;
if (!isWarm)
{
Console.WriteLine("It's not warm enough.");
}
else
{
Console.WriteLine("It's warm!");
}
}
}
Concepts Behind the Snippet
The logical NOT operator (!) is a unary operator that inverts the value of a boolean expression. If the operand is true, the result is false, and vice-versa.
Real-Life Use Case
Consider a user authentication system. You might use the NOT operator to check if a user is NOT authenticated before redirecting them to the login page: if (!isAuthenticated) { RedirectToLoginPage(); }
Best Practices
if (!condition), you might be able to rewrite it as if (oppositeCondition).
Interview Tip
Be prepared to explain the truth table for the NOT operator: !true is false, and !false is true.
When to use them
Use the logical NOT operator when you need to invert a boolean condition. This is often used to simplify complex boolean expressions or to check for the absence of a certain state.
Alternatives
Sometimes, instead of using NOT operator, it is better to change your logic. Instead of !isLogged you can use isNotLogged.
Pros
Cons
FAQ
-
Can I use multiple NOT operators in a row?
Yes, you can, but it's generally not recommended as it can make the code very difficult to understand.!!trueevaluates totrue. Avoid multiple negations. -
Is the NOT operator the same as the bitwise NOT operator?
No. The logical NOT operator (!) operates on boolean values, while the bitwise NOT operator (~) operates on integer values, inverting their bits.