Tracking this name is not always possible (it may be an expression).
And where possible, this will entail unacceptable overhead. Consider that at runtime you will need to keep track of almost all the reference variables, which would be expensive and prohibit all kinds of optimizations.
Also see my answer to Inspect the managed stack and the blog post it links to.
A simple solution is to build a more consistent null check in your own code:
void Foo(Bar b) { if (b == null) throw new ArgumentNullException(nameof(b)); ... }
source share