Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从索引枚举ImmutableSortedSet_C#_.net_Immutable Collections - Fatal编程技术网

C# 从索引枚举ImmutableSortedSet

C# 从索引枚举ImmutableSortedSet,c#,.net,immutable-collections,C#,.net,Immutable Collections,ImmutableSortedSet有一个IndexOf,我可以用一个normal for循环枚举该集合 但根据ImmutableSortedSet的源代码,它似乎必须对每个索引查找进行树搜索。如果我有成千上万的项目在集合中,这可能不会是非常有效的(和非常不必要的) 我可以从某个索引中获取枚举数并转发吗?我指的是一个能更有效地遍历内部节点树的节点 也许是某种用反射攻击枚举器的方法?我有点想让它快进到某个节点,然后从该节点继续枚举 我试图操纵枚举器中的“_reverse”-字段,将其首先“引导”到

ImmutableSortedSet有一个IndexOf,我可以用一个normal for循环枚举该集合

但根据ImmutableSortedSet的源代码,它似乎必须对每个索引查找进行树搜索。如果我有成千上万的项目在集合中,这可能不会是非常有效的(和非常不必要的)

我可以从某个索引中获取枚举数并转发吗?我指的是一个能更有效地遍历内部节点树的节点

也许是某种用反射攻击枚举器的方法?我有点想让它快进到某个节点,然后从该节点继续枚举

我试图操纵枚举器中的“_reverse”-字段,将其首先“引导”到第一个节点。但我无法让场地的变化保持不变


另一个想法是,最初填充节点堆栈,就好像它已经在枚举的一半,在我希望它开始的时候。只是不知道这是否可能。

是否设置了
。跳过(索引)
足够好?也许吧,但仍然不必要。。。如果使用
ImmutableSortedSet
的集合非常大,这仍然可能会成为一个问题,因为它必须是不可变的,或者因为可变
SortedSet
不能通过索引查询?在第二种情况下,您可以查看提供功能更丰富的集合的第三方库,如库。例如,
tryGetPreference
tryGetSuccession
GetRangeFromTo
等方法,可以向前和向后枚举。set.Skip(index)是否足够好?也许,但仍然不必要。。。如果使用
ImmutableSortedSet
的集合非常大,这仍然可能会成为一个问题,因为它必须是不可变的,或者因为可变
SortedSet
不能通过索引查询?在第二种情况下,您可以查看提供功能更丰富的集合的第三方库,如库。例如,具有类似于
tryGetPreference
tryGetSuccession
GetRangeFromTo
的方法,并且可以向前和向后枚举。