?. (Null Conditional Operator) C# with Example
Version ≥ 6.0
Introduced in C# 6.0, the Null Conditional Operator ?. will immediately return null if the expression on its left-
hand side evaluates to null, instead of throwing a NullReferenceException. If its left-hand side evaluates to a non-
null value, it is treated just like a normal . operator. Note that because it might return null, its return type is
always a nullable type. That means that for a struct or primitive type, it is wrapped into a Nullable.
var bar = Foo.GetBar()?.Value; // will return null if GetBar() returns null
var baz = Foo.GetBar()?.IntegerValue; // baz will be of type Nullable, i.e. int?
This comes handy when ﬁring events. Normally you would have to wrap the event call in an if statement checking
for null and raise the event afterwards, which introduces the possibility of a race condition. Using the Null
conditional operator this can be ﬁxed in the following way:
event EventHandler RaiseMe;