【问题标题】:Adding messages to message array将消息添加到消息数组
【发布时间】:2014-02-23 00:01:17
【问题描述】:

如果我声明了一个消息数组,并且我还有一个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();    
     }

任何提示都非常感谢

谢谢

【问题讨论】:

    标签: c# msmq message-queue


    【解决方案1】:

    将消息放入列表,然后将其转换为数组:

    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();
    

    【讨论】:

    • 谢谢,应该排序。我这样做是因为我只想添加 10 条消息
    猜你喜欢
    • 1970-01-01
    • 2011-04-15
    • 1970-01-01
    • 2021-08-15
    • 2022-01-19
    • 1970-01-01
    • 2020-11-27
    • 1970-01-01
    • 2013-11-23
    相关资源
    最近更新 更多