gpt4 book ai didi

c# - Linq Any() 与 MoveNext()

转载 作者:太空狗 更新时间:2023-10-29 21:16:33 26 4
gpt4 key购买 nike

在集合上使用 Linq,哪个最适合发现集合不为空?

HasChild = Childs.GetEnumerator().MoveNext() ? true : false;

HasChild = Childs.Any() ? true : false;

最佳答案

IEnumerator<T>工具 IDisposable (因此可以分配资源)你必须(在一般情况下)不是一条简单的线

// Don't do this: it can cause a resource leakage
HasChild = Childs.GetEnumerator().MoveNext() ? true : false;

只是一个片段

bool HasChild = false;

using (var en = Childs.GetEnumerator()) {
HasChild = en.MoveNext(); // You have no need in ternary operator here
}

Any 的情况下,它似乎太罗嗦了你应该做的一切

bool HasChild = Childs.Any();

Enumerable<T>.Any将为您完成冗长的部分:

http://referencesource.microsoft.com/#System.Core/System/Linq/Enumerable.cs,8788153112b7ffd0

    public static bool Any<TSource>(this IEnumerable<TSource> source) {
if (source == null) throw Error.ArgumentNull("source");
using (IEnumerator<TSource> e = source.GetEnumerator()) {
if (e.MoveNext()) return true;
}
return false;
}

关于c# - Linq Any() 与 MoveNext(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39701704/

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