📖 Scenario: Imagine you are working on a simple program that counts numbers and stores them in a list. You want to understand how storing numbers as objects (boxing) can affect the program's speed and memory.
🎯 Goal: You will create a list that stores integers as objects (boxing), then measure the time it takes to add numbers to this list. This will help you see how boxing can slow down your program.
📋 What You'll Learn
Create a list of objects called boxedNumbers.
Create an integer variable called count and set it to 100000.
Use a for loop with variable i from 0 to count - 1 to add i to boxedNumbers (boxing happens here).
Use Stopwatch to measure the time taken to add numbers.
Print the elapsed time in milliseconds.
💡 Why This Matters
🌍 Real World
Boxing and unboxing happen often when working with collections that store objects, like old APIs or non-generic collections.
💼 Career
Understanding boxing helps you write faster and more memory-efficient C# programs, which is important for software developers working on performance-critical applications.
Progress0 / 4 steps
1
Create a list to store boxed integers
Create a list called boxedNumbers that can store objects.
C Sharp (C#)
Hint
Use List<object> to store boxed integers.
2
Set the count of numbers to add
Create an integer variable called count and set it to 100000.
C Sharp (C#)
Hint
Use int count = 100000; to set the number of items.
3
Add numbers to the list with boxing and measure time
Use System.Diagnostics.Stopwatch to measure time. Start the stopwatch, then use a for loop with variable i from 0 to count - 1 to add i to boxedNumbers. Stop the stopwatch after the loop.
C Sharp (C#)
Hint
Use Stopwatch to measure time and a for loop to add numbers.
4
Print the elapsed time
Print the elapsed time in milliseconds using Console.WriteLine and stopwatch.ElapsedMilliseconds.
C Sharp (C#)
Hint
Use Console.WriteLine to show the elapsed time.
Practice
(1/5)
1. What is boxing in C#?
easy
A. Converting a value type to an object type
B. Converting an object type to a value type
C. Copying a reference type to another reference
D. Converting a string to a number
Solution
Step 1: Understand value and object types
Value types hold data directly, object types hold references to data.
Step 2: Define boxing
Boxing wraps a value type inside an object so it can be treated as an object.
Final Answer:
Converting a value type to an object type -> Option A
Quick Check:
Boxing = value type to object [OK]
Hint: Boxing wraps value types as objects to use object features [OK]
Common Mistakes:
Confusing boxing with unboxing
Thinking boxing converts reference types
Assuming boxing changes the value itself
2. Which of the following code snippets causes boxing in C#?
easy
A. int x = 5; object o = x;
B. int x = 5; int y = x + 2;
C. string s = "hello"; object o = s;
D. int[] arr = new int[3];
Solution
Step 1: Identify boxing operation
Boxing happens when a value type is assigned to an object type.
Step 2: Analyze each option
int x = 5; object o = x; assigns int (value type) to object, causing boxing. Others do not.
Final Answer:
int x = 5; object o = x; -> Option A
Quick Check:
Value type to object assignment = boxing [OK]
Hint: Assigning value type to object causes boxing [OK]
Common Mistakes:
Thinking string to object is boxing (string is reference type)
Confusing array creation with boxing
Assuming arithmetic operations cause boxing
3. What is the output of this C# code?
int i = 10;
object o = i;
int j = (int)o + 5;
Console.WriteLine(j);
medium
A. 10
B. Runtime error
C. 15
D. Compilation error
Solution
Step 1: Understand boxing and unboxing here
int i is boxed into object o. Then unboxed back to int j with cast.
Forgetting to cast during unboxing causing runtime error
Assuming boxing changes the value
Expecting output to be 10 or error
4. Identify the error in this code related to boxing/unboxing:
object o = 42;
int x = o;
medium
A. Cannot assign int to object
B. Missing explicit cast during unboxing
C. Boxing not allowed for int
D. No error, code is correct
Solution
Step 1: Check assignment from object to int
Unboxing requires explicit cast from object to value type.
Step 2: Identify missing cast
Code assigns object to int without cast, causing compile error.
Final Answer:
Missing explicit cast during unboxing -> Option B
Quick Check:
Unboxing needs cast [OK]
Hint: Unboxing always needs explicit cast [OK]
Common Mistakes:
Assuming implicit cast works for unboxing
Confusing boxing with unboxing errors
Thinking boxing is disallowed for int
5. You want to improve performance by avoiding boxing in this code:
List<object> list = new List<object>();
for (int i = 0; i < 5; i++) {
list.Add(i);
}
int sum = 0;
foreach (int x in list) {
sum += x;
}
Console.WriteLine(sum);
What is the best way to avoid boxing here?
hard
A. No change needed, boxing is minimal
B. Cast each element to int before adding
C. Use object array instead of List
D. Use List<int> instead of List<object>
Solution
Step 1: Identify boxing cause
Adding int to List<object> boxes each int to object.
Step 2: Use generic List of int
Using List<int> stores ints directly, no boxing occurs.
Final Answer:
Use List<int> instead of List<object> -> Option D
Quick Check:
Generic list of value type avoids boxing [OK]
Hint: Use generic collections with value types to avoid boxing [OK]
Common Mistakes:
Casting before adding does not avoid boxing
Using object array still boxes ints
Ignoring boxing impact on performance
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.