Reference assignment and shared state in C Sharp (C#) - Time & Space Complexity
Let's explore how assigning references affects the time it takes for a program to run.
We want to see how the program's steps grow when we share data between variables.
Analyze the time complexity of the following code snippet.
class Box {
public int Value;
}
void UpdateBox(Box b) {
b.Value = 10;
}
Box box1 = new Box();
Box box2 = box1; // Reference assignment
UpdateBox(box2);
This code creates a box object, assigns its reference to another variable, and updates the value through the second variable.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Simple reference assignment and a single method call.
- How many times: Each operation happens once, no loops or repeated traversals.
Since there are no loops or repeated steps, the number of operations stays the same no matter how big the input is.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 3 (assign, assign, update) |
| 100 | 3 (same steps, no change) |
| 1000 | 3 (still the same) |
Pattern observation: The steps do not increase with input size; they stay constant.
Time Complexity: O(1)
This means the program takes the same amount of time no matter how big the input or data is.
[X] Wrong: "Assigning a reference creates a new copy and takes longer as data grows."
[OK] Correct: Assigning a reference just points to the same data; it does not copy or repeat work, so time stays the same.
Understanding how references work helps you explain how programs manage data efficiently without extra cost.
"What if the UpdateBox method contained a loop that changed multiple values inside the Box? How would the time complexity change?"