排队字节数组问题

本文关键字:问题 数组 字节数 字节 排队 | 更新日期: 2023-09-27 18:07:22

最简单的例子。我想创建一个字节数组的队列,像这样:

        Queue<Byte[]> q = new Queue<Byte[]>();
        Byte[] block = new Byte[1];
        block[0] = 1;
        q.Enqueue(block);
        block[0] = 2;
        q.Enqueue(block);
        block[0] = 3;
        q.Enqueue(block);
        byte[] block1 = q.Dequeue();
        Console.WriteLine(block1[0]);
        block1 = q.Dequeue();
        Console.WriteLine(block1[0]);
        block1 = q.Dequeue();
        Console.WriteLine(block1[0]);

但事实上,我有三个"3"块,但期望"1"2"3"。知道我哪里做错了吗?

排队字节数组问题

你需要每次都创建一个新的数组,否则你只是在改变同一个数组,并在Queue中添加多个引用

Queue<Byte[]> q = new Queue<Byte[]>();
Byte[] block = new Byte[1];
block[0] = 1;
q.Enqueue(block);
// Create a new array
block = new Byte[1];
block[0] = 2;
q.Enqueue(block);
// Create a new array
block = new Byte[1];
block[0] = 3;
q.Enqueue(block);
byte[] block1 = q.Dequeue();
Console.WriteLine(block1[0]);
block1 = q.Dequeue();
Console.WriteLine(block1[0]);
block1 = q.Dequeue();
Console.WriteLine(block1[0]);