我正在使用此解决方案在我的代码中进行链式空检查
我只是想知道我们不能这样做.
bool returnValue = Helper.IsNull(nullPerson.contact.address.city);
Run Code Online (Sandbox Code Playgroud)
那不是更清洁吗?
我尝试编写这样的通用函数
public static bool IsNull<T>(this T rootObj)
{
var visitor = new IsNullExpressionVisitor();
//...
//...
}
Run Code Online (Sandbox Code Playgroud)
但后来我陷入了如何从这个rootObject中表达出来的问题.
解决这个问题的一种方法(尽管仍然有点笨拙)是使用有时被称为“Maybe” monad 的构造。
使用它,代码将变成这样(您可能喜欢也可能不喜欢!):
string city = nullPerson.With(x => x.address)
.With(x => x.city);
Run Code Online (Sandbox Code Playgroud)
不过,值得庆幸的是,C# 正在获得“安全导航”运算符 (?. C# 将在下一版本* 中
使用这个新的?.运算符,代码将如下所示:
city = nullPerson?.address?.city;
Run Code Online (Sandbox Code Playgroud)
(*据称...)
| 归档时间: |
|
| 查看次数: |
584 次 |
| 最近记录: |