From https://msdn.microsoft.com/en-us/library/bb297966(v=vs.110).aspx
[ComVisibleAttribute(false)]
public static T CompareExchange(
ref T locati
The documentation is misleading here, as location1 cannot be null since in C# it must always reference an existing variable. So yes, it is ok as what you are saying is "set location1 (that currently contains null) to be src if location1 is already null".
In fact because location1 has to be a reference it is impossible to pass a null-reference in C#, although it it possible (and valid) to pass a reference to something that is null, and so this function will never throw a NullReferenceException.
I suspect this is down to the documentation being ported over from the Win32 api, where you have to pass a pointer to the location to read/write the variable, and it would be an error to pass null here.