排队字节数组问题
Queue-ing Byte arrays trouble
最简单的例子。我正在尝试创建这样的字节数组队列:
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]);
最简单的例子。我正在尝试创建这样的字节数组队列:
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]);