在 C# 中,从对象枚举器创建对象数组的最优雅方法是什么?例如在这种情况下,我有一个可以返回字节的枚举器,所以我想将其转换为 byte[]。
编辑:创建枚举器的代码:
IEnumerator<byte> enumerator = anObject.GetEnumerator();
最佳答案
好的,所以,假设您有一个实际的枚举器 (IEnumerator<byte>
),您可以使用 while 循环:
var list = new List<byte>();
while(enumerator.MoveNext())
list.Add(enumerator.Current);
var array = list.ToArray();
实际上,我更愿意将 IEnumerator<T>
到IEnumerable<T>
:
public static class EnumeratorExtensions
{
public static IEnumerable<T> ToEnumerable<T>(this IEnumerator<T> enumerator)
{
while(enumerator.MoveNext())
yield return enumerator.Current;
}
}
然后,你可以得到数组:
var array = enumerator.ToEnumerable().ToArray();
当然,所有这些都假设您使用的是 .Net 3.5 或更高版本。
关于C# - 如何从枚举器创建数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3537657/