C#byte []到List <byte []>

bob*_*ker 2 c#

我正在尝试将一个byte []数组'a'放入List'b'中,但它不起作用.假设我有这个字节数组'a'.

12344
23425
34426
34533
Run Code Online (Sandbox Code Playgroud)

我想把它变成一个4项(行数)列表,但这不起作用.(设置中间字节[]然后添加)

    byte[] a = {1,2,3,4,4,2,3,4,2,5,3,4,4,2,6,3,4,5,3,3};
    List<byte[]> b = new List<byte[]>();
    byte[] inter_byte= new byte[5];

    for (int u=0; u<4; u++)
    {
         for (int p=0; p<5; p++)
         {      
              inter_byte[u] = file[(5*u) + p];
         }
         b.Add(inter_byte);
    }
Run Code Online (Sandbox Code Playgroud)

我得到的是List 4行长,但它是最后一行.最好的方法是什么?

cjk*_*cjk 6

您的字节数组是引用类型,这意味着在每个循环中更改它会更改存储的数据.在每个循环中声明它应该工作:

 byte[] a = {1,2,3,4,4,2,3,4,2,5,3,4,4,2,6,3,4,5,3,3};
 List<byte[]> b = new List<byte[]>();

 for (int u=0; u<4; u++)
 {
     byte[] inter_byte= new byte[5];
     for (int p=0; p<5; p++)
     {
         inter_byte[p] = a[(5*u) + p];
     }
     b.Add(inter_byte);
 }        
Run Code Online (Sandbox Code Playgroud)


Sas*_*ein 5

您需要inter_byte在每次迭代中重新分配,否则它将被重用并且您正在替换行.