[EDIT]
C# 6 got released a while ago and it shipped with null-propagating operator ?.
, which would simplify your case to:
var path = HttpContext?.Current?.Request?.ApplicationPath
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:
var path = HttpContext.IfNotNull(x => x.Current).IfNotNull(x => x.Request).IfNotNull(x => x.ApplicationPath);
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:
public static class Extensions
{
// safe null-check.
public static TOut IfNotNull<TIn, TOut>(this TIn v, Func<TIn, TOut> f)
where TIn : class
where TOut: class
{
if (v == null) return null;
return f(v);
}
}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…