级联空引用异常检查
本文关键字:检查 异常 引用 级联 | 更新日期: 2023-09-27 18:10:14
是否有一种方法可以在c#中进行通用级联空引用检查?
我想要实现的是,如果我试图访问一个字符串变量,它是类C的一部分,它在类B中返回,在a中
A.B.C.str
当我传入A时,我必须检查A是否为空,然后检查B是否为空,然后检查C是否为空,然后访问str
是否有可能有一些方法,我们可以传入A和a.b.c.s str,如果一切都正确存在,它返回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);