Logical patterns help you check if things are true or false in a clear way. They let you combine conditions to make decisions in your program.
Logical patterns (and, or, not) in C Sharp (C#)
case <pattern1> and <pattern2>: // code case <pattern1> or <pattern2>: // code case not <pattern>: // code
and means both patterns must match.
or means at least one pattern must match.
not means the pattern must NOT match.
int number = 15; switch (number) { case > 10 and < 20: Console.WriteLine("Number is between 11 and 19"); break; }
or.char letter = 'a'; switch (letter) { case 'a' or 'e' or 'i' or 'o' or 'u': Console.WriteLine("Letter is a vowel"); break; }
isActive is NOT true.bool isActive = false; switch (isActive) { case not true: Console.WriteLine("User is not active"); break; }
This program checks if a person can drive. They must be 18 or older and have a license. Otherwise, they cannot drive.
using System; class Program { static void Main() { int age = 25; bool hasLicense = true; switch (age) { case >= 18 when hasLicense: Console.WriteLine("Can drive"); break; case < 18: Console.WriteLine("Cannot drive"); break; default: Console.WriteLine("Cannot drive"); break; } } }
Logical patterns work inside switch statements to make conditions easier to read.
The underscore _ means "anything" and is useful with when clauses.
Use parentheses if you want to group patterns for clarity.
Logical patterns combine conditions with and, or, and not.
They make your code easier to read and understand.
Use them inside switch to check complex conditions simply.
Practice
Which logical operator in C# means both conditions must be true?
and, or, or not?Solution
Step 1: Understand the meaning of logical operators
Theandoperator requires both conditions to be true for the whole expression to be true.Step 2: Compare with other operators
ormeans one or both conditions are true,notnegates a condition, andxormeans exactly one condition is true.Final Answer:
and -> Option AQuick Check:
and means both true [OK]
- Confusing 'and' with 'or'
- Thinking 'not' means both true
- Mixing 'xor' with 'and'
Which of these is the correct C# syntax for the logical NOT operator?
?Solution
Step 1: Recall C# logical NOT syntax
In C#, the logical NOT operator is!placed before the variable or expression.Step 2: Check other options
not xis not valid C# syntax,~xis bitwise NOT, andx!is invalid.Final Answer:
!x -> Option CQuick Check:
Logical NOT uses ! before expression [OK]
- Using 'not' keyword instead of !
- Confusing bitwise ~ with logical !
- Placing ! after the variable
What is the output of this C# code?
bool a = true;
bool b = false;
if (a && !b) {
Console.WriteLine("Yes");
} else {
Console.WriteLine("No");
}Solution
Step 1: Evaluate variables and conditions
Variableais true,bis false, so!bis true.Step 2: Evaluate the if condition
a && !bbecomestrue && true, which is true, so the if block runs.Final Answer:
Yes -> Option BQuick Check:
true and not false = true [OK]
- Ignoring the ! operator
- Thinking false && true is true
- Confusing output strings with boolean values
Find the error in this C# code snippet:
bool x = true;
if (x && !x) {
Console.WriteLine("True");
} else {
Console.WriteLine("False");
}Solution
Step 1: Analyze the condition logic
The conditionx && !xmeans x is true AND x is false at the same time, which is impossible.Step 2: Check syntax correctness
The syntax is correct:&&is used properly, semicolons and Console.WriteLine are fine.Final Answer:
Contradictory condition: x and not x can never be true -> Option DQuick Check:
True and not true = false always [OK]
- Thinking condition can be true
- Confusing & with &&
- Looking for syntax errors when logic is the issue
You want to write a C# switch expression that returns "Valid" only if age is between 18 and 30 inclusive, and hasID is true. Which pattern correctly uses logical operators?
return (age, hasID) switch {
??? => "Valid",
_ => "Invalid"
};Solution
Step 1: Understand switch pattern matching with tuples
The switch matches a tuple (age, hasID). To check conditions on both, use awhenclause with logical operators.Step 2: Analyze each option
var (a, id) when a >= 18 && a <= 30 && id correctly uses tuple deconstructionvar (a, id)and checksa >= 18 && a <= 30 && id(whereidis boolean). Others are invalid syntax or misuse logical operators.Final Answer:
var (a, id) when a >= 18 && a <= 30 && id -> Option AQuick Check:
Tuple pattern with when and && is correct [OK]
- Trying to use and inside tuple without when
- Misplacing logical operators outside when clause
- Not deconstructing tuple properly
Ready to prove it?
Pass the test and this pattern moves unknown
