Search code examples
c#operatorsshort-circuiting

Does c# ?? operator short circuit?


When using the ?? operator in C#, does it short circuit if the value being tested is not null?

Example:

string test = null;
string test2 = test ?? "Default";

string test3 = test2 ?? test.ToLower();

Does the test3 line succeed or throw a null reference exception?

So another way to phrase the question: Will the right hand expression of the ?? operator get evaluated if the left hand is not null?


Solution

  • Yes, it says so in the C# Language Specification (highlighting by me):

    A null coalescing expression of the form a ?? b requires a to be of a nullable type or reference type. If a is non-null, the result of a ?? b is a; otherwise, the result is b. The operation evaluates b only if a is null.