首页 > 解决方案 > 将值从 sortedset 复制到数组

问题描述

我目前正在一个项目中使用排序集,然后我需要将它们放在一个数组中以使用索引对其进行迭代。我遇到了一个奇怪的问题,即 CopyTo 方法无法正常工作,我想知道是否有真正的原因。我的代码是:

SortedSet<float> zValuesSet = new SortedSet<float>();

//Insert some values in the set

float[] zValues = new float[zValuesSet.Count];
zValuesSet.CopyTo(zValues);

使用这个,我遇到一个错误,告诉我我在 zValues 中分配的值比它的容量多,即使我使用 Set.Count 来获取容量。为了解决我的问题,我使用了:

List<float> zValuesList = new List<float>(zValuesSet);
float[] zValues = zValuesList.ToArray();

但是,这可能会导致使用第一种方法可以避免的成本(我猜?)。所以我想知道为什么会发生这种情况?

编辑:那是我的错,我正在使用这种集合的多次出现并且我拼错了它......所以副本运行良好。

标签: c#arrayscopysortedset

解决方案


您可以通过这种方式直接转换为数组:

 SortedSet<float> zValuesSet = new SortedSet<float> { 1, 2, 3 };

 float[] zValues = zValuesSet.ToArray();

在这里工作:https ://ideone.com/xphVAJ


推荐阅读