Null-coalescing operator in C Sharp (C#) - Time & Space Complexity
Let's see how the null-coalescing operator affects the time it takes for a program to run.
We want to know how the number of steps changes as input size grows.
Analyze the time complexity of the following code snippet.
string? GetName(string? input)
{
return input ?? "Default";
}
string?[] names = new string?[1000];
for (int i = 0; i < names.Length; i++)
{
string name = GetName(names[i]);
}
This code uses the null-coalescing operator to return a default string if the input is null, repeated over an array.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Looping through the array of strings.
- How many times: Once for each element in the array (n times).
Each element is checked once with the null-coalescing operator.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 checks |
| 100 | 100 checks |
| 1000 | 1000 checks |
Pattern observation: The number of operations grows directly with the input size.
Time Complexity: O(n)
This means the time to run grows in a straight line as the input size grows.
[X] Wrong: "The null-coalescing operator makes the code run instantly regardless of input size."
[OK] Correct: Even though the operator is simple, it still runs once per item, so time grows with input size.
Understanding how simple operators affect time helps you explain your code clearly and shows you think about efficiency.
"What if we replaced the loop with a recursive call over the array? How would the time complexity change?"
Practice
What does the null-coalescing operator ?? do in C#?
Solution
Step 1: Understand the operator's purpose
The null-coalescing operator??is used to provide a fallback value when the left-hand side is null.Step 2: Analyze behavior
If the left value is not null, it returns that value; otherwise, it returns the right value.Final Answer:
Returns the left value if it is not null; otherwise, returns the right value. -> Option AQuick Check:
Null-coalescing operator = fallback value [OK]
- Confusing it with equality check
- Thinking it assigns values automatically
- Assuming it throws exceptions on null
Which of the following is the correct syntax to use the null-coalescing operator in C#?
string name = null; string displayName = ??? "Guest";
Solution
Step 1: Identify correct operator usage
The null-coalescing operator syntax isleft ?? right, where right is the fallback value.Step 2: Match syntax to code
Givenstring displayName = name ?? "Guest";, it correctly assigns "Guest" if name is null.Final Answer:
name ?? "Guest" -> Option BQuick Check:
Correct syntax uses ?? between variables [OK]
- Using single question mark ? instead of ??
- Placing ?? after the variable without right value
- Confusing with ternary operator syntax
What will be the output of the following C# code?
string input = null; string result = input ?? "Default"; Console.WriteLine(result);
Solution
Step 1: Check the value of
The variableinputinputis assignednull.Step 2: Apply null-coalescing operator
The expressioninput ?? "Default"returns "Default" becauseinputis null.Final Answer:
Default -> Option CQuick Check:
Null input returns fallback string [OK]
- Expecting output to be 'null' string
- Confusing with ternary operator output
- Thinking it causes compile error
Identify the error in the following code snippet using the null-coalescing operator:
int? number = null; int result = number ?? null; Console.WriteLine(result);
Solution
Step 1: Analyze variable types
numberis nullable int (int?), butresultis non-nullable int.Step 2: Check right operand of null-coalescing
The right operand isnull, which cannot be assigned to non-nullable intresult.Final Answer:
Cannot use null as right operand for int result. -> Option DQuick Check:
Right side must be non-null for non-nullable target [OK]
- Using null as fallback for non-nullable variable
- Confusing ?? with logical operators
- Ignoring nullable type rules
Given the following code, what will be the output?
string? firstName = null; string? lastName = "Smith"; string fullName = firstName ?? lastName ?? "Unknown"; Console.WriteLine(fullName);
Solution
Step 1: Evaluate first null-coalescing operation
firstNameis null, sofirstName ?? lastNameevaluates tolastName, which is "Smith".Step 2: Evaluate second null-coalescing operation
SincelastNameis not null, the second?? "Unknown"is not used.Final Answer:
Smith -> Option AQuick Check:
Chained ?? returns first non-null value [OK]
- Expecting 'Unknown' when lastName is not null
- Thinking null propagates through chain
- Assuming compilation error with nullable strings
Ready to prove it?
Pass the test and this pattern moves unknown
