📖 Scenario: You are building a simple program that checks the type of different objects and prints a message based on their type. This is useful when you want to handle different data types differently in your code.
🎯 Goal: Create a program that uses type patterns in C# to identify if an object is an int, string, or bool and prints a message accordingly.
📋 What You'll Learn
Create an object variable with different values
Create a variable to hold the current object value
Use switch expression with type patterns to check the object's type
Print the message based on the type detected
💡 Why This Matters
🌍 Real World
Type patterns help programs decide what to do based on the kind of data they receive, like checking if a user input is a number or text.
💼 Career
Understanding type patterns is useful for writing clean and safe code that handles different data types correctly, a common task in software development.
Progress0 / 4 steps
1
Create an object variable with a value
Create an object variable called value and set it to the integer 42.
C Sharp (C#)
Hint
Use object value = 42; to create the variable.
2
Create a variable to hold the current object
Create a variable called currentValue and assign it the value of value.
C Sharp (C#)
Hint
Assign value to currentValue like this: object currentValue = value;
3
Use switch expression with type patterns
Use a switch expression on currentValue with type patterns to check if it is an int, string, or bool. Store the result in a string variable called message. Use these messages: "Integer value: {i}" for int, "String value: {s}" for string, "Boolean value: {b}" for bool, and "Unknown type" for others.
C Sharp (C#)
Hint
Use a switch expression with type patterns like int i => to match types.
4
Print the message
Write a Console.WriteLine statement to print the message variable.
C Sharp (C#)
Hint
Use Console.WriteLine(message); to print the message.
Practice
(1/5)
1. What does a type pattern in C# do when used in an if statement like if (obj is string s)?
easy
A. Always returns true regardless of obj type
B. Converts obj to a string without checking
C. Checks if obj is a string and assigns it to s if true
D. Throws an exception if obj is not a string
Solution
Step 1: Understand the is keyword with type pattern
The is keyword checks if the object is of the specified type.
Step 2: Recognize the pattern variable assignment
If the check is true, the object is assigned to the variable s of that type.
Final Answer:
Checks if obj is a string and assigns it to s if true -> Option C
Quick Check:
Type pattern = Check and assign [OK]
Hint: Type pattern checks type and assigns in one step [OK]
Common Mistakes:
Thinking it converts without checking
Assuming it always returns true
Expecting an exception on type mismatch
2. Which of the following is the correct syntax for using a type pattern in an if statement in C#?
easy
A. if (obj as int number) { }
B. if (int obj is number) { }
C. if (obj int is number) { }
D. if (obj is int number) { }
Solution
Step 1: Recall correct type pattern syntax
The correct syntax is if (variable is Type name).
Step 2: Check each option
if (obj is int number) { } matches the correct syntax. Options B, C, and D have incorrect order or keywords.
Final Answer:
if (obj is int number) { } -> Option D
Quick Check:
Correct syntax = if (obj is Type name) [OK]
Hint: Remember: if (obj is Type var) [OK]
Common Mistakes:
Swapping type and variable order
Using 'as' instead of 'is' for pattern
Placing keywords incorrectly
3. What will be the output of this C# code?
object obj = 42; if (obj is int number) { Console.WriteLine(number + 10); } else { Console.WriteLine("Not an int"); }
medium
A. 52
B. Not an int
C. Compilation error
D. Runtime exception
Solution
Step 1: Check the type of obj
obj holds the integer 42, so obj is int is true.
Step 2: Calculate the output inside the if block
The variable number is assigned 42, so number + 10 equals 52, which is printed.
Final Answer:
52 -> Option A
Quick Check:
Type check true, output = 42 + 10 = 52 [OK]
Hint: If type matches, variable holds value for use [OK]
Common Mistakes:
Expecting 'Not an int' output
Confusing type check with cast
Thinking code throws error
4. Identify the error in this code snippet using type patterns:
object obj = "hello"; if (obj is int number) { Console.WriteLine(number); }
medium
A. No output because obj is not an int
B. Compilation error due to missing else block
C. No error, code runs and prints 'hello'
D. Runtime exception when casting string to int
Solution
Step 1: Analyze the type check condition
obj is a string, so obj is int number is false.
Step 2: Understand the effect on output
Since the if condition is false and no else block exists, nothing is printed.
Final Answer:
No output because obj is not an int -> Option A
Quick Check:
False type check = no output [OK]
Hint: False type check skips block, no output [OK]
Common Mistakes:
Expecting runtime exception
Thinking else block is mandatory
Assuming it prints the string
5. Given this method using type patterns, what will it return? <pre>string Describe(object input) { return input switch { int i => $"Integer: {i}", string s => $"String: {s}", null => "Null value", _ => "Unknown type" }; }
What is the result of Describe(3.14)?
hard
A. "Integer: 3"
B. "Unknown type"
C. "String: 3.14"
D. Compilation error
Solution
Step 1: Check the switch cases for input 3.14
3.14 is a double, which does not match int, string, or null.
Step 2: Identify the default case
The underscore _ matches any other type, so it returns "Unknown type".