在C#中,从对象的枚举器创建对象数组的最优雅方法是什么?例如,在这种情况下,我有一个可以返回字节的枚举器,所以我想将其转换为byte [].
编辑:创建枚举器的代码:
IEnumeratorenumerator = updDnsPacket.GetEnumerator();
Brian Genisi.. 22
好吧,假设您有一个实际的枚举器(IEnumerator
),您可以使用while循环:
var list = new List(); while(enumerator.MoveNext()) list.Add(enumerator.Current); var array = list.ToArray();
在现实中,我更愿意转IEnumerator
来的IEnumerable
:
public static class EnumeratorExtensions { public static IEnumerableToEnumerable (this IEnumerator enumerator) { while(enumerator.MoveNext()) yield return enumerator.Current; } }
然后,你可以得到数组:
var array = enumerator.ToEnumerable().ToArray();
当然,所有这些都假设您使用的是.Net 3.5或更高版本.
好吧,假设您有一个实际的枚举器(IEnumerator
),您可以使用while循环:
var list = new List(); while(enumerator.MoveNext()) list.Add(enumerator.Current); var array = list.ToArray();
在现实中,我更愿意转IEnumerator
来的IEnumerable
:
public static class EnumeratorExtensions { public static IEnumerableToEnumerable (this IEnumerator enumerator) { while(enumerator.MoveNext()) yield return enumerator.Current; } }
然后,你可以得到数组:
var array = enumerator.ToEnumerable().ToArray();
当然,所有这些都假设您使用的是.Net 3.5或更高版本.
假设您有一个IEnumerable
IEnumerableudpDnsPacket = /*...*/; byte[] result = udpDnsPacket.ToArray();