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

Boxing and unboxing execution in C Sharp (C#) - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Boxing and Unboxing Master
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 boxing and unboxing code?
Consider the following C# code snippet. What will it print when run?
C Sharp (C#)
int x = 10;
object obj = x; // boxing
int y = (int)obj; // unboxing
Console.WriteLine(y);
A10
B0
CCompilation error
DInvalidCastException at runtime
Attempts:
2 left
💡 Hint
Boxing stores the value type inside an object. Unboxing extracts it back.
❓ Predict Output
intermediate
2:00remaining
What happens if unboxing to wrong type?
What will this C# code print or do when executed?
C Sharp (C#)
int x = 5;
object obj = x; // boxing
long y = (long)obj; // unboxing to wrong type
Console.WriteLine(y);
A5
BInvalidCastException at runtime
CCompilation error
D0
Attempts:
2 left
💡 Hint
Unboxing requires exact type match.
🔧 Debug
advanced
2:00remaining
Why does this code cause a runtime error?
Examine the code below. Why does it throw an exception at runtime?
C Sharp (C#)
object obj = 42; // boxing int
short s = (short)obj; // unboxing to short
Console.WriteLine(s);
ABecause boxing failed due to missing cast
BBecause Console.WriteLine cannot print short
CBecause short cannot hold int values
DBecause unboxing requires exact type, not convertible types
Attempts:
2 left
💡 Hint
Unboxing must match the original boxed type exactly.
🧠 Conceptual
advanced
2:00remaining
What is the main cost of boxing in C#?
Why is boxing considered costly in C# programs?
ABecause it modifies the original variable's value
BBecause it changes the value type to a reference type permanently
CBecause it creates a new object on the heap and copies the value
DBecause it requires special compiler directives
Attempts:
2 left
💡 Hint
Think about what happens when a value type is boxed.
❓ Predict Output
expert
2:00remaining
What is the output of this mixed boxing and unboxing code?
Analyze the following C# code and determine its output:
C Sharp (C#)
object obj = 123;
int a = (int)obj;
obj = a + 1;
int b = (int)obj;
Console.WriteLine(a + "," + b);
A123,124
B124,124
C123,123
DInvalidCastException at runtime
Attempts:
2 left
💡 Hint
Remember boxing creates a new object each time.

Practice

(1/5)
1. What happens during boxing in C#?
easy
A. A value type is converted to an object type.
B. An object type is converted to a value type.
C. A reference type is converted to a value type.
D. A value type is converted to a string.

Solution

  1. Step 1: Understand boxing concept

    Boxing means wrapping a value type (like int) inside an object so it can be treated as an object.
  2. Step 2: Identify the conversion direction

    Boxing converts a value type to an object type, not the other way around.
  3. Final Answer:

    A value type is converted to an object type. -> Option A
  4. Quick Check:

    Boxing = value type to object [OK]
Hint: Boxing wraps value types as objects [OK]
Common Mistakes:
  • Confusing boxing with unboxing
  • Thinking boxing converts to string
  • Mixing up value and reference types
2. Which of the following is the correct syntax to unbox an object to an int in C#?
easy
A. int x = obj.ToInt();
B. int x = obj as int;
C. int x = Convert.ToInt32(obj);
D. int x = (int)obj;

Solution

  1. Step 1: Recall unboxing syntax

    Unboxing requires an explicit cast from object to the original value type.
  2. Step 2: Check each option

    int x = (int)obj; uses explicit cast (int)obj which is correct. int x = obj as int; uses 'as' which works only for reference types. int x = Convert.ToInt32(obj); converts but is not unboxing. int x = obj.ToInt(); is invalid syntax.
  3. Final Answer:

    int x = (int)obj; -> Option D
  4. Quick Check:

    Unboxing = explicit cast (int)obj [OK]
Hint: Unboxing needs explicit cast (int)obj [OK]
Common Mistakes:
  • Using 'as' keyword for unboxing
  • Using Convert.ToInt32 instead of cast
  • Calling non-existent methods like ToInt()
3. What is the output of the following C# code?
int a = 10;
object obj = a; // boxing
int b = (int)obj; // unboxing
b += 5;
Console.WriteLine(a);
medium
A. 15
B. 10
C. 5
D. Compilation error

Solution

  1. Step 1: Understand boxing and unboxing here

    Variable 'a' is boxed into 'obj'. Then 'obj' is unboxed into 'b'. 'b' is a separate copy.
  2. Step 2: Check value changes

    Incrementing 'b' by 5 does not affect 'a'. So 'a' remains 10.
  3. Final Answer:

    10 -> Option B
  4. Quick Check:

    Boxing copies value; original stays 10 [OK]
Hint: Boxing copies value; original unchanged [OK]
Common Mistakes:
  • Assuming 'a' changes when 'b' changes
  • Confusing reference and value types
  • Thinking boxing links variables
4. Identify the error in this C# code snippet:
object obj = 123;
long l = (long)obj;
Console.WriteLine(l);
medium
A. Invalid cast exception at runtime
B. Compilation error due to missing cast
C. No error, prints 123
D. Null reference exception

Solution

  1. Step 1: Analyze boxing and unboxing types

    Boxing stores an int (123) in obj. Unboxing must cast back to int, not long.
  2. Step 2: Understand runtime behavior

    Trying to unbox as long causes InvalidCastException because obj holds int, not long.
  3. Final Answer:

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

    Unboxing type mismatch causes runtime error [OK]
Hint: Unbox only to original value type [OK]
Common Mistakes:
  • Casting to different value type than boxed
  • Expecting compile-time error instead of runtime
  • Ignoring boxing type stored
5. Given a list of integers boxed as objects, how can you sum their values correctly in C#?
List<object> list = new List<object> { 1, 2, 3, 4 };

Which code snippet correctly sums the integers?
hard
A. int sum = 0; foreach (int x in list) sum += x;
B. int sum = 0; foreach (object o in list) sum += (o as int);
C. int sum = 0; foreach (object o in list) sum += (int)o;
D. int sum = list.Sum();

Solution

  1. Step 1: Understand list content and types

    List contains objects boxed from ints. To sum, unbox each object to int.
  2. Step 2: Evaluate each option

    A: int sum = 0; foreach (int x in list) sum += x; compile error - cannot implicitly convert object to int.
    B: int sum = 0; foreach (object o in list) sum += (o as int); compile error - 'as' cannot be used with non-nullable value types.
    C: int sum = list.Sum(); fails because list is List<object>, no Sum() overload.
    D: int sum = 0; foreach (object o in list) sum += (int)o; unboxes correctly with (int)o.
  3. Final Answer:

    int sum = 0; foreach (object o in list) sum += (int)o; -> Option C
  4. Quick Check:

    Unbox each object with (int)o to sum [OK]
Hint: Unbox each object with (int)o before summing [OK]
Common Mistakes:
  • Trying to foreach as int directly
  • Using Sum() on List<object>
  • Using 'as' operator for unboxing
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