📖 Scenario: Imagine you are building a simple program that needs to check what kind of objects it is working with while running. This is like checking the label on a box before opening it to know what's inside.
🎯 Goal: You will create a program that stores different objects, then finds out and prints their types while the program is running.
📋 What You'll Learn
Create a list called items with different types of objects
Create a variable called count to store the number of items
Use a for loop with variable i to go through items
Inside the loop, get the type of each item using GetType()
Print the type name of each item using Console.WriteLine
💡 Why This Matters
🌍 Real World
Programs often need to check what kind of data they are working with to decide what to do next. For example, a program that reads files might check if the content is text or numbers.
💼 Career
Understanding how to get type information at runtime helps in debugging, logging, and writing flexible code that can handle different data types safely.
Progress0 / 4 steps
1
Create a list of different objects
Create a list called items that contains these exact objects: 42 (an integer), "hello" (a string), and 3.14 (a double).
C Sharp (C#)
Hint
Use List<object> to hold different types together.
2
Create a variable to count the items
Create an integer variable called count and set it to the number of items in the items list using items.Count.
C Sharp (C#)
Hint
Use int count = items.Count; to get the number of items.
3
Loop through the list and get each item's type
Use a for loop with variable i from 0 to count - 1 to go through the items list. Inside the loop, create a variable called itemType and set it to the type of the current item using items[i].GetType().
C Sharp (C#)
Hint
Use for (int i = 0; i < count; i++) and items[i].GetType().
4
Print the type name of each item
Inside the for loop, add a line to print the type name of each item using Console.WriteLine(itemType.Name).
C Sharp (C#)
Hint
Use Console.WriteLine(itemType.Name); to print the type name.
Practice
(1/5)
1. What does the GetType() method do in C#?
easy
A. Changes the type of an object
B. Creates a new object of a specified type
C. Returns the exact runtime type of an object
D. Deletes the object from memory
Solution
Step 1: Understand the purpose of GetType()
The GetType() method is used to find out the exact type of an object while the program is running.
Step 2: Differentiate from other actions
It does not change, create, or delete objects; it only returns type information.
Final Answer:
Returns the exact runtime type of an object -> Option C
Quick Check:
GetType() returns type info [OK]
Hint: Remember: GetType() tells you what type an object is [OK]
Common Mistakes:
Thinking GetType() changes the object
Confusing GetType() with creating objects
Assuming GetType() deletes objects
2. Which of the following is the correct syntax to get the type of an object obj in C#?
easy
A. obj.GetType()
B. GetType(obj)
C. typeof(obj)
D. obj.Type()
Solution
Step 1: Recall method call syntax
In C#, to get the runtime type of an object, you call the method on the object: obj.GetType().
Step 2: Understand other options
GetType(obj) is invalid syntax, typeof(obj) is incorrect because typeof expects a type name, not a variable, and obj.Type() does not exist.
Final Answer:
obj.GetType() -> Option A
Quick Check:
Call GetType() on the object [OK]
Hint: Use dot notation: object.GetType() [OK]
Common Mistakes:
Using typeof with a variable instead of a type
Trying to call GetType as a standalone function
Using incorrect method names like Type()
3. What will be the output of the following code?
object val = 123;
Console.WriteLine(val.GetType().Name);
medium
A. Int32
B. int
C. Object
D. String
Solution
Step 1: Identify the runtime type of val
The variable val is declared as object but holds the integer value 123, which is of type Int32 in C#.
Step 2: Understand GetType().Name output
Calling val.GetType().Name returns the name of the actual runtime type, which is Int32.
Final Answer:
Int32 -> Option A
Quick Check:
Runtime type name = Int32 [OK]
Hint: GetType().Name shows exact type name [OK]
Common Mistakes:
Expecting 'int' instead of 'Int32'
Thinking it returns 'Object' because of variable type
Confusing with string output
4. Identify the error in this code snippet:
object data = "hello";
if (data.GetType() == string)
{
Console.WriteLine("It's a string!");
}
medium
A. Missing semicolon after Console.WriteLine
B. Comparing GetType() to a type name instead of a Type object
C. Using == instead of .Equals() for type comparison
D. GetType() cannot be used on object variables
Solution
Step 1: Analyze the type comparison
The code compares data.GetType() to string, but string is a keyword, not a Type object.
Step 2: Correct way to compare types
To compare types, use typeof(string) which returns the Type object for string. So the condition should be data.GetType() == typeof(string).
Final Answer:
Comparing GetType() to a type name instead of a Type object -> Option B
Quick Check:
Use typeof(TypeName) for type comparison [OK]
Hint: Compare with typeof(TypeName), not just type name [OK]
Common Mistakes:
Using type name without typeof()
Thinking == can't compare types
Assuming GetType() is invalid on object
5. You want to write a method that accepts an object and prints a special message if the object is an integer or a string. Which code correctly uses runtime type information to do this?