Bird
Raised Fist0
C Sharp (C#)programming~5 mins

Logical patterns (and, or, not) in C Sharp (C#)

Choose your learning style10 modes available
Introduction

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.

Checking if a user is both logged in and has permission before showing a page.
Deciding if a number is either less than 10 or greater than 100.
Making sure a password is not empty and contains special characters.
Skipping an action if a user is not active or not verified.
Syntax
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.

Examples
This checks if number is greater than 10 and less than 20.
C Sharp (C#)
int number = 15;
switch (number)
{
    case > 10 and < 20:
        Console.WriteLine("Number is between 11 and 19");
        break;
}
This checks if letter is any vowel using or.
C Sharp (C#)
char letter = 'a';
switch (letter)
{
    case 'a' or 'e' or 'i' or 'o' or 'u':
        Console.WriteLine("Letter is a vowel");
        break;
}
This checks if isActive is NOT true.
C Sharp (C#)
bool isActive = false;
switch (isActive)
{
    case not true:
        Console.WriteLine("User is not active");
        break;
}
Sample Program

This program checks if a person can drive. They must be 18 or older and have a license. Otherwise, they cannot drive.

C Sharp (C#)
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;
        }
    }
}
OutputSuccess
Important Notes

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.

Summary

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

(1/5)
1.

Which logical operator in C# means both conditions must be true?

and, or, or not?
easy
A. and
B. or
C. not
D. xor

Solution

  1. Step 1: Understand the meaning of logical operators

    The and operator requires both conditions to be true for the whole expression to be true.
  2. Step 2: Compare with other operators

    or means one or both conditions are true, not negates a condition, and xor means exactly one condition is true.
  3. Final Answer:

    and -> Option A
  4. Quick Check:

    and means both true [OK]
Hint: Remember: and = both true, or = any true, not = reverse [OK]
Common Mistakes:
  • Confusing 'and' with 'or'
  • Thinking 'not' means both true
  • Mixing 'xor' with 'and'
2.

Which of these is the correct C# syntax for the logical NOT operator?

?
easy
A. not x
B. x!
C. !x
D. ~x

Solution

  1. Step 1: Recall C# logical NOT syntax

    In C#, the logical NOT operator is ! placed before the variable or expression.
  2. Step 2: Check other options

    not x is not valid C# syntax, ~x is bitwise NOT, and x! is invalid.
  3. Final Answer:

    !x -> Option C
  4. Quick Check:

    Logical NOT uses ! before expression [OK]
Hint: Logical NOT is always ! before the variable [OK]
Common Mistakes:
  • Using 'not' keyword instead of !
  • Confusing bitwise ~ with logical !
  • Placing ! after the variable
3.

What is the output of this C# code?

bool a = true;
bool b = false;
if (a && !b) {
    Console.WriteLine("Yes");
} else {
    Console.WriteLine("No");
}
medium
A. No
B. Yes
C. True
D. False

Solution

  1. Step 1: Evaluate variables and conditions

    Variable a is true, b is false, so !b is true.
  2. Step 2: Evaluate the if condition

    a && !b becomes true && true, which is true, so the if block runs.
  3. Final Answer:

    Yes -> Option B
  4. Quick Check:

    true and not false = true [OK]
Hint: Remember ! reverses boolean, so !false = true [OK]
Common Mistakes:
  • Ignoring the ! operator
  • Thinking false && true is true
  • Confusing output strings with boolean values
4.

Find the error in this C# code snippet:

bool x = true;
if (x && !x) {
    Console.WriteLine("True");
} else {
    Console.WriteLine("False");
}
medium
A. Using single & instead of &&
B. Missing semicolon after if statement
C. Incorrect use of Console.WriteLine
D. Contradictory condition: x and not x can never be true

Solution

  1. Step 1: Analyze the condition logic

    The condition x && !x means x is true AND x is false at the same time, which is impossible.
  2. Step 2: Check syntax correctness

    The syntax is correct: && is used properly, semicolons and Console.WriteLine are fine.
  3. Final Answer:

    Contradictory condition: x and not x can never be true -> Option D
  4. Quick Check:

    True and not true = false always [OK]
Hint: Check if condition can ever be true logically [OK]
Common Mistakes:
  • Thinking condition can be true
  • Confusing & with &&
  • Looking for syntax errors when logic is the issue
5.

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"
};
hard
A. var (a, id) when a >= 18 && a <= 30 && id
B. (>= 18 and <= 30 and true, hasID)
C. var a when a >= 18 && a <= 30 && hasID == true
D. (>= 18 and <= 30, true)

Solution

  1. Step 1: Understand switch pattern matching with tuples

    The switch matches a tuple (age, hasID). To check conditions on both, use a when clause with logical operators.
  2. Step 2: Analyze each option

    var (a, id) when a >= 18 && a <= 30 && id correctly uses tuple deconstruction var (a, id) and checks a >= 18 && a <= 30 && id (where id is boolean). Others are invalid syntax or misuse logical operators.
  3. Final Answer:

    var (a, id) when a >= 18 && a <= 30 && id -> Option A
  4. Quick Check:

    Tuple pattern with when and && is correct [OK]
Hint: Use tuple deconstruction with when and && for multiple conditions [OK]
Common Mistakes:
  • Trying to use and inside tuple without when
  • Misplacing logical operators outside when clause
  • Not deconstructing tuple properly
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard