繁体   English   中英

级联空引用异常检查?

[英]Cascading null reference exception check?

有没有办法在c#中进行通用的级联空引用检查?

我想要实现的是,如果我试图访问一个字符串变量,它是C类的一部分,它在B类中,在A中。

ABCstr

而且我在A中传递,我将检查A是否为空,然后检查B是否为空,然后检查C是否为null然后访问str。

是否有可能有一些方法 - 我们可以传入,A和ABCstr,如果一切正确存在,则返回null是null或str的值。

目前还没有内置方法可以做到这一点,但是在C#6.0中我们期待一个“安全导航”操作符,请参阅Jerry Nixon的这篇文章

它看起来像这样:

var g1 = parent?.child?.child?.child; 
if (g1 != null) // TODO

c#中没有内置的可能性,但你可以使用这样的东西http://www.codeproject.com/Articles/109026/Chained-null-checks-and-the-Maybe-monad

它涉及如此声明一个函数:

public static TResult With<TInput, TResult>(this TInput o, 
       Func<TInput, TResult> evaluator)
       where TResult : class where TInput : class
{
  if (o == null) return null;
  return evaluator(o);
}

你可以这样调用:

string postCode = this.With(x => person)
                      .With(x => x.Address)
                      .With(x => x.PostCode);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM