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.!!true
evaluates 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.