C#结构体作为函数参数的问题
新鸟,如下结构体,作为函数参数:public byte msg_parse(Msg_s obj, byte data),编译时没有报错,运行时给obj.data赋值就报错:“System.NullReferenceException:“未将对象引用设置到对象的实例。””,debug发现obj.data是null。我试过这样定义,static Msg_s obj = new Msg_s();obj.data还是null,求大佬指点迷津,谢谢。
public struct Msg_s
{
public byte sop1;
public byte sop2;
public byte msg_type;
public byte msg_id;
public ushort length;
public byte[] data;
public ushort crc;
public byte eop1;
public byte eop2;
};
因为你的data是byte[]数组,所以需要new一下,obj.data = new byte[]{}; 感谢大佬指导,这样可以了,我有个疑问,static Msg_s obj = new Msg_s();这样new整个结构体,结构体里面的数组怎么还要重新new呢? allegro 发表于 2022-6-17 18:05
感谢大佬指导,这样可以了,我有个疑问,static Msg_s obj = new Msg_s();这样new整个结构体,结构体里面的 ...
因为你里面的属性也是一个对象 感谢,我把嵌入式里面的C语言移到C#里面,原来没有问题的现在好多问题,看来差别挺大的。 allegro 发表于 2022-6-21 10:57
感谢,我把嵌入式里面的C语言移到C#里面,原来没有问题的现在好多问题,看来差别挺大的。
是的,面向对象嘛,只要是对象 都要new
页:
[1]