C# 分配字节数组时出现奇怪错误

C# 分配字节数组时出现奇怪错误,c#,bytearray,C#,Bytearray,错误: 无效的表达式项“{” ;期望 C#没有那样的数组文字语法。只有在构建时才能这样做 将代码调整为: byte[] frame_to_send= new byte[6]; // code frame_to_send = { 0x68, 0x04, 0x83, 0x00, 0x00, 0x00}; `//Array edit` 只能在构造时初始化时执行此操作: byte[] frame_to_send= new byte[] { 0x68, 0x04, 0x83, 0x00, 0x00

错误:

无效的表达式项“{”
;期望

C#没有那样的数组文字语法。只有在构建时才能这样做

将代码调整为:

byte[] frame_to_send= new byte[6];
// code  

frame_to_send = { 0x68, 0x04, 0x83, 0x00, 0x00, 0x00}; `//Array edit`

只能在构造时初始化时执行此操作:

byte[] frame_to_send= new byte[] { 0x68, 0x04, 0x83, 0x00, 0x00, 0x00};
在以后的任何时候,您只能这样做:

byte[] frame_to_send = { 0x68, 0x04, 0x83, 0x00, 0x00, 0x00};

请注意,在显示的代码中,您首先创建一个字节数组,所有值都设置为0,然后(尝试)创建一个新的字节数组,完全丢弃以前创建的字节数组。因此,您的初始赋值是完全冗余的。

这就是您要查找的:

frame_to_send = new byte[]{ 0x68, 0x04, 0x83, 0x00, 0x00, 0x00};

如果要在声明数组后使用它,则需要逐个元素访问它

字节[]帧发送=新字节[6];

帧发送[0]=0x68;
帧发送[1]=0x04;
帧发送[2]=0x83;
帧发送[3]=0x00;
帧发送[4]=0x00;
帧发送[5]=0x00


您可以始终使用循环来执行此操作。

表达式右侧不需要显式类型,
byte[]frame\u to\u send={..};
应该可以正常工作循环将不可避免地访问不同的、已经存在的数组,在这种情况下,
array.Copy(包含数组的数据,frame\u to\u send,frame\u to\u send.Length)
是比循环简单得多的解决方案。这是个好主意。@Fabjan不,编译器将文本解释为
int
,并且不能将
int[]
转换为
字节[]
。试过;)这就是为什么,女士们先生们,除了让代码变得非常不可读之外,省略类型是一个坏主意:)是的,你说得对,只是忘记了默认情况下它会创建
int
数组,对你的答案投了赞成票anyway@Nyerguds如果只在上面的一行声明了类型,就不能省略它。很清楚是什么类型但在本例中,10的类型可能是
byte
int
甚至
long
,因此我们应该明确声明类型。
byte[] frame_to_send = new byte[] { 0x68, 0x04, 0x83, 0x00, 0x00, 0x00};