c# 定义一个结构体 结构体里面有float数组 请问如何初始化

时间:2022-08-30 19:08:54
我做了一个c# 与 c++ 通信的程序 为了方便 在c++ 端发送接收的都是结构体,在c#中要把byte[]转化成 结构体的 但是我的结构体中有 float 数组 请问如何初始化
 unsafe public struct blk
     {
          [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)] // 声明一个字符数组,大小为20
          public  char[] command;
          public int generation;
          [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)] // 声明一个字符数组,大小为20
          public  char[] blkname;
         public float rate;

         public unsafe fixed float invalue[50]; 
         public unsafe fixed float coefvalue[50]; 
         public unsafe fixed float outvalue[50];
}

6 个解决方案

#1


public blk(float [] s)
{
 this.invalue=s;
}
与类查不多

#2


用  unsafe  和 fixed 就 麻烦了 

#3


引用 2 楼 happyer_longlong 的回复:
用  unsafe  和 fixed 就 麻烦了

你说的那个方法可以,请问还有什么好的方法?

#4


初始化成 什么结果啊   

#5


引用 4 楼 happyer_longlong 的回复:
初始化成 什么结果啊 

我的程序是用c++ 与 c# socket 通信,在c++ 定义了一个结构体, 发送的时候直接发送结构体地址就可以了,而c#中 发送接收都要用 byte[],在网上看了看例子,可以模拟出struct 结构体来,在struct 结构体中必须有构造函数,初始化的值就是接收的数据转化过来的

#6


就   在  结构体的 构造函数里面 初始化 

#1


public blk(float [] s)
{
 this.invalue=s;
}
与类查不多

#2


用  unsafe  和 fixed 就 麻烦了 

#3


引用 2 楼 happyer_longlong 的回复:
用  unsafe  和 fixed 就 麻烦了

你说的那个方法可以,请问还有什么好的方法?

#4


初始化成 什么结果啊   

#5


引用 4 楼 happyer_longlong 的回复:
初始化成 什么结果啊 

我的程序是用c++ 与 c# socket 通信,在c++ 定义了一个结构体, 发送的时候直接发送结构体地址就可以了,而c#中 发送接收都要用 byte[],在网上看了看例子,可以模拟出struct 结构体来,在struct 结构体中必须有构造函数,初始化的值就是接收的数据转化过来的

#6


就   在  结构体的 构造函数里面 初始化