大量の要素を含むリストがあります。元のリストを変更せずに操作を実行するには、このリストのコピーを作成する必要があります。ただし、操作は通常、リストの要素のごく一部にしかアクセスしないため、ほとんどが使用されない場合に全体をコピーするのは非効率的です。リストのクローンであるオブジェクトを作成する簡単な方法はありますが、アクセスされたときに要素をクローンするだけですか? 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;
}
ソリューションが任意のタイプのリストを処理するのに十分なほど一般的でなくてもかまいません。私が作成した 1 つまたは 2 つのクラスに固有のものであれば問題ありません。
これは、浅いコピーではなく深いコピーであることが望ましいですが、浅いコピーは依然として有用であり、それがより短く/より単純である場合、その例をいただければ幸いです。