gpt4 book ai didi

c# - 进行链式空检查的优雅方式

转载 作者:太空狗 更新时间:2023-10-29 23:14:55 24 4
gpt4 key购买 nike

我正在使用这个解决方案在我的代码中进行链式 null 检查

Cleaner way to do a null check in C#?

我只是想知道我们不能这样做吗。

bool returnValue = Helper.IsNull(nullPerson.contact.address.city);

那不是更干净吗?

我试过写这样一个泛型函数

public static bool IsNull<T>(this T rootObj)
{
var visitor = new IsNullExpressionVisitor();
//...
//...
}

但后来我陷入了如何从这个 rootObject 中表达出来的问题。

最佳答案

解决此问题的一种方法(尽管仍然有些笨拙)是使用 a construct that's sometimes called a "Maybe" monad .

使用它,代码会变成这样(你可能喜欢也可能不喜欢!):

string city = nullPerson.With(x => x.address)
.With(x => x.city);

但是,很高兴因为C# is getting the "Safe Navigation" operator (?.) in the next version*.

使用这个新的 ?. 运算符,代码将如下所示:

city = nullPerson?.address?.city;

(*据称...)

关于c# - 进行链式空检查的优雅方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22987127/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com