C# - 如何从枚举器创建数组

标签 c# arrays enumerator

在 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/

相关文章:

javascript - 谷歌可视化 : Animated Line Graph --incremental rather than all at once?

ruby - 为什么 3.times 需要一个 .each 如果作为参数传递,而不是直接使用,如 "3.times do xyz end"

c# - 我可以通过 ClosedXML 将 EXCEL 工作表保存为 CSV 格式吗?

c# - 在 streamwriter C# 中使用绝对路径

javascript - 如何返回对象中的属性并按顺序排列它们?

python - 将数组提升为另一个数组的幂 - 即扩展数组的维度

ruby - 在 Ruby 中循环遍历 Enumerator 的其余部分

c# - HashSet 枚举器有什么作用?

c# - 使用文本提取器后,U-SQL 忽略在 JsonFunctions.JsonTuple() 中导致 JSON 异常的行

c# - iOS 上的 Unity Google Cardboard 显示问题