gpt4 book ai didi

c# - 惰性列表克隆

转载 作者:行者123 更新时间:2023-11-30 21:03:22 24 4
gpt4 key购买 nike

我有一个包含大量元素的列表。我需要创建此列表的副本以在不更改原始列表的情况下对其执行操作。然而,这些操作通常只访问列表中的一小部分元素,因此当大部分元素将不被使用时复制整个元素是低效的。有没有一种简单的方法来创建一个对象,该对象是列表的克隆,但仅在访问元素时克隆元素?我调查了 Lazy<T>类,这似乎是我想要的,但我不知道如何在这种情况下应用它。

我希望能够做这样的事情:

LazyListCopy<SomeType> lazyCopy = LazyListCopy.Copy(myList); // No elements have been copied at this point
DoSomethingWith(lazyCopy[34]); // 35th element has now been copied

还有这个:

foreach(SomeType listElement in LazyCopy.Copy(myOtherList))
{
if (!Check(listElement)) // Object corresponding to listElement has been cloned
break;
}

我不介意解决方案是否不够通用,无法处理任何类型的列表;如果它特定于我创建的一两个类,我会很好。

最好是深拷贝而不是浅拷贝,但浅拷贝仍然有用,如果它也更短/更简单,我将不胜感激。

最佳答案

听起来您想以原始列表加上稀疏的覆盖集合结束。

为什么不为覆盖创建一个字典,将索引键入原始列表?然后,您可以根据需要手动添加原始列表中的值。

您可以将此功能包装到一个包装 IList<T> 的类中如果它是您要经常使用的东西。

关于c# - 惰性列表克隆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12929426/

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