gpt4 book ai didi

c# - 在 C# 6.0 之前处理 NullReferenceException 的好方法

转载 作者:IT王子 更新时间:2023-10-29 04:46:52 24 4
gpt4 key购买 nike

我下面的代码给了我一个 NullReferenceException 并且堆栈跟踪告诉我问题出在 Count 方法中,所以我很确定在某个时候 foobarbaznull

我的代码:

IQueryable<IGrouping<string, Referral>> queryable= ...;
var dict = queryable.ToDictionary(g => g.Key.ToString(),
g => g.Count(r => r.foo.bar.baz.dummy == "Success"));

我想知道处理 null 情况的简洁方法是什么。我了解到在 C# 6.0 中我只能执行 foo?.bar?.baz?.dummy,但是我正在处理的项目不是 C# 6.0

最佳答案

<6.0 的解决方案是:

.Count(r => r.foo != null && 
r.foo.bar != null &&
r.foo.bar.baz != null &&
r.foo.bar.baz.dummy == "Success")

正是为了像上面那样的复杂构造,引入了空传播运算符。

此外,您还可以将表达式重构为私有(private)方法:

private Expression<Func<Referral, bool>> Filter(string value)
{
return r => r.foo != null &&
r.foo.bar != null &&
r.foo.bar.baz != null &&
r.foo.bar.baz.dummy == value;
}

并按如下方式使用它:

g => g.Count(Filter("Success"))

关于c# - 在 C# 6.0 之前处理 NullReferenceException 的好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33097924/

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