This question has been completely overhauled in the interest of being thorough in explanation.
I have noticed what appears to be quite a poor limitation of
You're not the only one! SLaks raised this as an issue (now here)
Why can't I write code like this?
Process.GetProcessById(2)?.Exited += delegate { };
and after it was briefly closed as "By design"
the ?. Operator never produces an lvalue, so this is by design.
someone commented that it would be good for property setters as well as event handlers
Maybe add also properties setters into request like:
Object?.Prop = false;
and it was re-opened as a feature request for C#7.