如果我声明了一个消息数组并且我还有一个MessageEnumerator,我怎样才能将枚举器的当前消息添加到数组中?
Message[] m = null;
MessageEnumerator me = q.GetMessageEnumerator2();
for (int i = 0; i < 10; i++)
{
me.MoveNext();
Array.Resize(ref m, m.Length + 1);
m[m.Length - 1] = // the current message?
me.RemoveCurrent();
}
任何提示都赞赏
感谢
答案 0 :(得分:2)
将消息放入列表然后将其转换为数组:
List<Message> ml = new List<Message>();
MessageEnumerator me = q.GetMessageEnumerator2();
for (int i = 0; i < 10; i++)
{
me.MoveNext();
ml.Add(me.Current);
}
Message[] m = ml.ToArray();
另一方面,你不应该在IEnumerable
上迭代(使用索引),你应该用这种方式枚举:
List<Message> ml = new List<Message>();
foreach (Message mx in q.GetMessageEnumerator2())
{
ml.Add(mx);
}
Message[] m = ml.ToArray();
你甚至可以将IEnumerator
直接倒入一个新的清单,但这太紧了,甚至不再有意义了:
List<Message> ml = new List<Message>(q.GetMessageEnumerator2());
Message[] m = ml.ToArray();