我做了一个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];
}

解决方案 »

  1.   

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

  2.   

    用  unsafe  和 fixed 就 麻烦了 
      

  3.   

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