C#如何用一行代码为已声明的byte数组赋值?
嘿,我来帮你搞定这个byte数组赋值的问题!
已声明byte数组的一行赋值方案
你之前尝试的ConnectionPath = { 0, 2, 1, 0 };之所以无效,是因为数组初始化器{...}只能在声明变量的同时使用,或者配合new关键字一起使用,单独直接用是不符合语法规则的。下面分两种常见场景给你可行的解决办法:
场景1:允许重新分配数组(无需保留原数组引用)
如果你的代码里不需要维持原来的数组对象(比如原数组没有被其他地方引用),直接用new byte[]初始化后赋值就行,这完全是一行代码就能搞定的:
ConnectionPath = new byte[] { 0, 2, 1, 0 };
这行代码会创建一个新的byte数组实例,然后把它的引用赋值给ConnectionPath变量,完美满足你“一行赋值”的需求。
场景2:需要保留原数组引用(不能重新分配)
如果这个数组已经被其他代码引用,你不能创建新数组,只能修改现有数组的元素,那可以用Array.Copy方法一行完成元素替换:
Array.Copy(new byte[] { 0, 2, 1, 0 }, ConnectionPath, 4);
⚠️ 注意:原数组ConnectionPath的长度必须至少为4,否则会抛出数组长度不匹配的异常。另外也可以用更简洁的CopyTo写法(效果完全一致):
new byte[] { 0, 2, 1, 0 }.CopyTo(ConnectionPath, 0);
小补充
如果是在声明数组的时候赋值,你可以省略new byte[],比如:
byte[] ConnectionPath = { 0, 2, 1, 0 };
但正如你提到的,程序运行中需要动态修改数组值时,就必须用前面提到的两种方法啦。
内容的提问来源于stack exchange,提问作者Belekz
相关产品推荐
相关产品推荐

