gpt4 book ai didi

c# - 是否有任何预先存在的可枚举扩展使其 NullReferenceException 安全?

转载 作者:太空宇宙 更新时间:2023-11-03 10:24:26 24 4
gpt4 key购买 nike

我替换了下面的代码

if (myEnumerable != null)
{
myEnumerable
.Where(o => o.Somehing == something)
.Select(o => o.SomeOtherThing);
}

myEnumerable
.EmptyIfNull()
.Where(o => o.Somehing == something)
.Select(o => o.SomeOtherThing);

但以上是可能的,因为我推出了自己的 EmptyIfNull

public static IEnumerable<TElement> EmptyIfNull<TElement>(IEnumerable<TElement source)
{
return source ?? Enumerable.Empty<TElement>();
}

我的问题是,是否已经使用 LINQ 扩展编写了与语法糖相同的此类内容? (不使用 C# 6.0)

最佳答案

没有像这样的标准扩展,很可能是因为返回/传递 null 枚举被认为是一种不好的做法。
C#6 (VS2015)你可以用下面的糖

var q = myEnumerable?
.Where(o => o.Somehing == something)
.Select(o => o.SomeOtherThing);

但请注意,与您的 empty enumerable 相比,本例中的结果 q 将为 null

编辑 由于您编辑了您的问题并施加了额外的约束,所以忘记 ?. 运算符 - 它不会产生等效的结果(正如我提到的)。但这并没有改变一开始的主要答案

There isn't a standard extension like this

关于c# - 是否有任何预先存在的可枚举扩展使其 NullReferenceException 安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32158724/

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