Null propagation operator and foreach
No it is not. It's designed to allow access members of an object in a secure way. In this case you have to check whether the array is null.
I've found another, working way:
When using Jon Skeet's (et al) fantastic MoreLinq extensions, there is a ForEach
extension method which I can use in my initial example like:
int[] values = null;
values?.ForEach(i=> /*...*/); // Does not throw, even values is null.