What does x?.y?.z mean?

Be aware that this language feature is only available in C# 6 and later.

It’s effectively the equivalent of:

x == null ? null
   : x.y == null ? null
   : x.y.z

In other words, it’s a “safe” way to do x.y.z, where any of the properties along the way might be null.

Also related is the null coalescing operator (??), which provides values to substitute for null.

Leave a Comment