将值从 sortedset 复制到数组
Copying values from sortedset to array
我目前正在做一个项目,在这个项目中我使用了一个排序集,然后我需要将它们放在一个数组中以使用索引对其进行迭代。我遇到了一个奇怪的问题,即 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();
但是,这可能会导致成本(我猜?)使用第一种方法可以避免。所以我想知道为什么会这样?
编辑:那是我的错,我多次使用这种集合,但我拼错了......所以复制到的效果很好。
可以这样直接转成数组:
SortedSet<float> zValuesSet = new SortedSet<float> { 1, 2, 3 };
float[] zValues = zValuesSet.ToArray();
我目前正在做一个项目,在这个项目中我使用了一个排序集,然后我需要将它们放在一个数组中以使用索引对其进行迭代。我遇到了一个奇怪的问题,即 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();
但是,这可能会导致成本(我猜?)使用第一种方法可以避免。所以我想知道为什么会这样?
编辑:那是我的错,我多次使用这种集合,但我拼错了......所以复制到的效果很好。
可以这样直接转成数组:
SortedSet<float> zValuesSet = new SortedSet<float> { 1, 2, 3 };
float[] zValues = zValuesSet.ToArray();