如何在C#中将List<byte>转换为byte[]?

13

我能用 for 循环进行转换吗?

有没有更好的方法进行转换?

 for (int i = 0; i < myListByte.Count ;i++)
 {
     myArryByte[i] = myListByte[i];
 }

能否切换到C# 3.0?如果可以,使用ToArray方法;如果不行,就采用老旧的“创建数组,在foreach循环中复制值”的方法。 - Dyppl
2
@Dyppl:ToArray方法在2.0版本的List<>中已经可用。为此切换到3.0版本是不必要的。此外,一个人不会因为一个方便的功能而更换框架。 - Paul Sasik
@Paul Sasik:你说得对,我完全忘记了这一点,并且确信人们是指LINQ扩展方法。谢谢! - Dyppl
1
请记住,List和IList有不同的方法,而IList没有ToArray()方法... - Random
3
个人而言,我建议在处理二进制数据时使用 MemoryStream 而不是 List<byte>。这样你就可以使用 GetBuffer() 访问底层的超大缓冲区而无需进行额外的分配;只需要记住从中读取 .Length 字节即可。;p - Marc Gravell
5个回答

25
myArryByte = myListByte.ToArray();

9
List<byte> bytes = ...;

byte[] bArrary = bytes.ToArray();

8

7
byte[] arr = myListByte.ToArray();

2
这可能是您正在寻找的内容:
private void convertByteArray()
{
    List<byte> byteList = new List<byte>() {2, 3, 4};
    byte[] byteArray = byteList.ToArray<byte>();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接