I want to do this
var path = HttpContext.Current.Request.ApplicationPath;
If any of the Properties along the way is null, i want path to be null, or “” would be better.
Is there an elegant way to do this without Ternaries?
ideally i would like this behavior (without the horrible performance and ugliness)
string path;
try
{
path = HttpContext.Current.Request.ApplicationPath;
}
catch
{
path = null;
}
Thank you
[EDIT]
C# 6 got released a while ago and it shipped with null-propagating operator
?., which would simplify your case to:For historical reasons, answer for previous language versions can be found below.
I guess you’re looking for Groovy’s safe dereferencing operator
?., and you’re not the first.From the linked topic, the solution I personally like best is this one (that one looks quite nice too).
Then you can just do:
You can always shorten the function name a little bit. This will return null if any of the objects in the expression is null, ApplicationPath otherwise. For value types, you’d have to perform one null check at the end. Anyway, there’s no other way so far, unless you want to check against null on every level.
Here’s the extension method used above: