Consider the following code:
IEnumerable xx = null;
var tt = xx?.Where(x => x > 2).Select(x => x.ToString());
It assign
Yes, this is due to short-circuiting. From the MSDN reference:
...[T]he null-condition operators are short-circuiting. If one operation in a chain of conditional member access and index operation returns null, then the rest of the chain’s execution stops.
The reason your second example throws is because you have separate unchained statements. Short-circuiting cannot be applied across multiple statements.