C#结构体数组嵌套问题

langwdalan 2015-07-30 10:38:58
首先我声明了几个结构体:
struct STimeStamp       //时间戳
{
public uint sec; //秒
public ushort millsec; //毫秒
}
struct SSenosrRecord //传感器数据记录
{
public float fWavelength; //波长
public float fPhysicalVal; // 物理量
public ushort nSensorNo; // 传感器编号
}
struct SChannelRecord // 通道数据
{
public byte nChannelNo; // 通道号
public byte nSensorCount; // 通道中传感器数据个数
public SSenosrRecord[] aSensor ;//传感器数据
}
struct SPacket //采样包数据结构
{
public STimeStamp ts; // 时间戳
public byte nChannelCount; // 通道数量
public SChannelRecord[] aChannel ;//通道数据
}

然后初始化结构体:
SChannelRecord schannelrecord = new SChannelRecord();
SSenosrRecord ssenosrrecord = new SSenosrRecord();
STimeStamp stime = new STimeStamp();
SPacket spacket = new SPacket();
SChannelRecord[] aChannel = new SChannelRecord[128];
SSenosrRecord[] aSensor = new SSenosrRecord [100];

可是当我给其中的值赋值时:
aChannel[i].aSensor[j].fWavelength = BitConverter.ToSingle(aa4, 0);

就会报错:
未将对象引用设置到对象的实例。
请问是怎么回事,我将如何更改
...全文
365 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Nsuna 2018-03-29
  • 打赏
  • 举报
回复
请问一下:如果我要在子结构体中定义多个变量时,怎么连接呢??类似地“a[0].b[0].num"\\系统总是运行报错。
xian_wwq 2015-07-30
  • 打赏
  • 举报
回复
数组中成员没有初始化 ------------------------ SSenosrRecord[] aSensor = new SSenosrRecord [100]; 完成后还需要

for(int i = 0;i< 100;i++)
{
   aSensor[i] = new SSenosrRecord();
}
其他处理类似
  • 打赏
  • 举报
回复
aChannel[i].aSensor[j] 你的SSenosrRecord[] aSensor是结构体的数组,你在struct里面没有给他初始化过,虽然你下面有 SSenosrRecord[] aSensor = new SSenosrRecord [100]; 但这个跟你的aChannel 没有任何关系,至少就你的代码而言两者没任何关系
xdashewan 2015-07-30
  • 打赏
  • 举报
回复

aChannel[i].aSensor = new SSenosrRecord [100];

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧