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

Object type as universal base in C Sharp (C#) - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Object Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this code using object as base?

Consider this C# code where object is used as a universal base type. What will be printed?

C Sharp (C#)
object val = 123;
Console.WriteLine(val.GetType());
ASystem.Int32
BSystem.Object
C123
DSystem.String
Attempts:
2 left
💡 Hint

Remember that object can hold any type, but GetType() returns the actual runtime type.

❓ Predict Output
intermediate
2:00remaining
What is the output when casting object to string?

What will this code print?

C Sharp (C#)
object val = "hello";
string s = (string)val;
Console.WriteLine(s.Length);
ASystem.String
B5
Chello
DRuntime error
Attempts:
2 left
💡 Hint

Check the length of the string stored inside the object.

🔧 Debug
advanced
2:00remaining
Why does this code cause an exception?

Examine the code below. Why does it throw an exception at runtime?

C Sharp (C#)
object val = 42;
string s = (string)val;
Console.WriteLine(s);
ACompile-time error due to invalid cast
BNullReferenceException because val is null
CInvalidCastException because int cannot be cast to string
DNo exception, prints 42
Attempts:
2 left
💡 Hint

Think about what types can be cast directly to string.

🧠 Conceptual
advanced
2:00remaining
What is the result of using object.Equals with different types?

What does this code print?

C Sharp (C#)
object a = 10;
object b = "10";
Console.WriteLine(a.Equals(b));
AFalse
BRuntime exception
CCompile-time error
DTrue
Attempts:
2 left
💡 Hint

Check if Equals compares values or types.

❓ Predict Output
expert
3:00remaining
What is the output of this polymorphic object array?

Given this array of objects holding different types, what will be printed?

C Sharp (C#)
object[] arr = { 1, "two", 3.0 };
foreach (var item in arr)
{
    Console.WriteLine(item.GetType().Name);
}
A
1
two
3.0
B
Object
Object
Object
C
int
string
double
D
Int32
String
Double
Attempts:
2 left
💡 Hint

Remember GetType() returns the runtime type of each element.

Practice

(1/5)
1. What is the role of the object type in C#?
easy
A. object is used only for reference types, not value types.
B. object is used only for strings.
C. object is a special type for numeric calculations.
D. object is the universal base type for all data types.

Solution

  1. Step 1: Understand the base type concept

    In C#, object is the root type from which all other types derive, including value and reference types.
  2. Step 2: Analyze the options

    Only object is the universal base type for all data types. correctly states that object is the universal base type for all data types.
  3. Final Answer:

    object is the universal base type for all data types. -> Option D
  4. Quick Check:

    object = universal base type [OK]
Hint: Remember: all types inherit from object in C# [OK]
Common Mistakes:
  • Thinking object is only for reference types
  • Confusing object with string or numeric types
  • Assuming object is a special numeric type
2. Which of the following is the correct way to store an integer value in an object variable?
easy
A. int obj = new object(42);
B. object obj = 42;
C. object obj = new int(42);
D. object obj = "42";

Solution

  1. Step 1: Understand boxing of value types

    In C#, value types like int can be stored in an object variable by implicit boxing, e.g., object obj = 42;.
  2. Step 2: Check each option

    object obj = 42; correctly assigns an integer to an object variable. Options B and C use invalid syntax. object obj = "42"; stores a string, not an integer.
  3. Final Answer:

    object obj = 42; -> Option B
  4. Quick Check:

    Boxing int to object = object obj = 42; [OK]
Hint: Assign value directly to object for boxing [OK]
Common Mistakes:
  • Trying to use new with int type
  • Confusing string and int assignments
  • Using invalid constructors for value types
3. What will be the output of this code?
object obj = 10;
int x = (int)obj + 5;
Console.WriteLine(x);
medium
A. Runtime error
B. 10
C. 15
D. Compilation error

Solution

  1. Step 1: Understand boxing and unboxing

    The integer 10 is boxed into obj. Casting back to int unboxes it correctly.
  2. Step 2: Calculate the expression

    Unboxed value 10 plus 5 equals 15, which is printed.
  3. Final Answer:

    15 -> Option C
  4. Quick Check:

    Unbox 10 + 5 = 15 [OK]
Hint: Cast object back to int before arithmetic [OK]
Common Mistakes:
  • Forgetting to cast before adding
  • Expecting string output
  • Confusing compile and runtime errors
4. Identify the error in this code snippet:
object obj = "hello";
int num = (int)obj;
Console.WriteLine(num);
medium
A. Invalid cast exception at runtime
B. Compilation error due to type mismatch
C. No error, prints 'hello'
D. Syntax error in variable declaration

Solution

  1. Step 1: Analyze the cast operation

    The object contains a string "hello" but is cast to int, which is invalid.
  2. Step 2: Identify the error type

    This causes an InvalidCastException at runtime, not a compile-time error.
  3. Final Answer:

    Invalid cast exception at runtime -> Option A
  4. Quick Check:

    Wrong cast string to int = runtime error [OK]
Hint: Cast only to the original stored type [OK]
Common Mistakes:
  • Assuming compile-time error instead of runtime
  • Casting string to int directly
  • Ignoring exception possibility
5. Given this code, what is the best way to safely retrieve the integer value stored in obj?
object obj = 25;
// Retrieve integer value safely here
hard
A. int value = obj is int i ? i : 0;
B. int value = obj as int;
C. int value = Convert.ToInt32(obj);
D. int value = (int)obj;

Solution

  1. Step 1: Understand safe casting options

    Direct cast (A) can throw exceptions. as operator (B) cannot be used with value types like int.
  2. Step 2: Evaluate options for safety

    int value = obj is int i ? i : 0; uses pattern matching to check type before assignment, avoiding exceptions. int value = Convert.ToInt32(obj); converts but may throw if obj is not convertible.
  3. Final Answer:

    int value = obj is int i ? i : 0; -> Option A
  4. Quick Check:

    Use pattern matching for safe unboxing [OK]
Hint: Use pattern matching to safely cast object [OK]
Common Mistakes:
  • Using 'as' with value types
  • Not checking type before casting
  • Assuming Convert.ToInt32 is always safe
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