C# 从索引枚举ImmutableSortedSet
ImmutableSortedSet有一个IndexOf,我可以用一个normal for循环枚举该集合 但根据ImmutableSortedSet的源代码,它似乎必须对每个索引查找进行树搜索。如果我有成千上万的项目在集合中,这可能不会是非常有效的(和非常不必要的) 我可以从某个索引中获取枚举数并转发吗?我指的是一个能更有效地遍历内部节点树的节点 也许是某种用反射攻击枚举器的方法?我有点想让它快进到某个节点,然后从该节点继续枚举 我试图操纵枚举器中的“_reverse”-字段,将其首先“引导”到第一个节点。但我无法让场地的变化保持不变C# 从索引枚举ImmutableSortedSet,c#,.net,immutable-collections,C#,.net,Immutable Collections,ImmutableSortedSet有一个IndexOf,我可以用一个normal for循环枚举该集合 但根据ImmutableSortedSet的源代码,它似乎必须对每个索引查找进行树搜索。如果我有成千上万的项目在集合中,这可能不会是非常有效的(和非常不必要的) 我可以从某个索引中获取枚举数并转发吗?我指的是一个能更有效地遍历内部节点树的节点 也许是某种用反射攻击枚举器的方法?我有点想让它快进到某个节点,然后从该节点继续枚举 我试图操纵枚举器中的“_reverse”-字段,将其首先“引导”到
另一个想法是,最初填充节点堆栈,就好像它已经在枚举的一半,在我希望它开始的时候。只是不知道这是否可能。是否设置了
。跳过(索引)
足够好?也许吧,但仍然不必要。。。如果使用ImmutableSortedSet
的集合非常大,这仍然可能会成为一个问题,因为它必须是不可变的,或者因为可变SortedSet
不能通过索引查询?在第二种情况下,您可以查看提供功能更丰富的集合的第三方库,如库。例如,tryGetPreference
、tryGetSuccession
和GetRangeFromTo
等方法,可以向前和向后枚举。set.Skip(index)是否足够好?也许,但仍然不必要。。。如果使用ImmutableSortedSet
的集合非常大,这仍然可能会成为一个问题,因为它必须是不可变的,或者因为可变SortedSet
不能通过索引查询?在第二种情况下,您可以查看提供功能更丰富的集合的第三方库,如库。例如,具有类似于tryGetPreference
、tryGetSuccession
和GetRangeFromTo
的方法,并且可以向前和向后枚举。