gpt4 book ai didi

c# - 具有 yield 的 IEnumerable 函数是否比 List 函数更高效?

转载 作者:太空宇宙 更新时间:2023-11-03 21:19:56 25 4
gpt4 key购买 nike

我正在编写一个 C# 表单应用程序,想知道以下两个函数是否能达到相同的结果:

public List<object> Method1(int parentId)
{
List<object> allChildren = new List<object>();
foreach (var item in list.Where(c => c.parentHtmlNodeForeignKey == parentId))
{
allChildren.Add(item);
allChildren.AddRange(Method1(item.id));
}
return allChildren;
}
public IEnumerable<object> Method2(int parentId)
{
foreach (var item in list.Where(c => c.parentHtmlNodeForeignKey == parentId))
{
yield return item;
foreach (var itemy in Method2(item.id))
{
yield return itemy;
}
}
}

我说 Method1 函数比 Method2 更有效吗?

此外,是否可以将上述任一功能编码为更高效?

编辑

我正在使用该函数返回一些对象,然后将这些对象显示在 ListView 中。然后我循环遍历这些相同的对象以检查是否出现字符串。

谢谢。

最佳答案

这在很大程度上取决于您想做什么。例如,如果您使用 FirstOrDefault(p => ....) yield 方法会更快,因为它不需要将所有内容存储到列表中并且如果第一个元素是正确的list 方法有一些开销(当然 yield 方法也有开销,但正如我所说,这取决于)。

如果您想一遍又一遍地遍历数据,那么您应该使用列表。

关于c# - 具有 yield 的 IEnumerable<T> 函数是否比 List<T> 函数更高效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31499323/

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