关于c中的结构体在.net中如何定义?
typedef   struct 
 { 
 char   name[40];         //姓名 
 char   sex[10];               //性别 
 char   people[20];      //民族, 
 }IDCARD_ALL; 
 这个是c中的结构体,我在c#中应该如何定义呢? 
 这个结构体我需要使用ref传递到外部dll中去付值的. 
 我在c#中定义 
 public   struct   SEntity    
 {      
 public   string   name;    
 public   string   sex;    
 public   string   people;       
 } 
 传递进入dll后报错.访问不可读写内存.vb6.0的例子中使用的是string*40这样来定义的.   
 后来我定义成 
 public   struct   SEntity    
 {      
 public   char[]   name;    
 public   char[]      sex;    
 public   char[]      people;       
 } 
 又报传入数组不是所需要的类型.    
------解决方案--------------------public struct SEntity  
 {  
 [MarshalAs(UnmanagedType.ByValArray, SizeConst=40)] 
 public byte[] name;  
 [MarshalAs(UnmanagedType.ByValArray, SizeConst=10)] 
 public byte[]  sex; 
 [MarshalAs(UnmanagedType.ByValArray, SizeConst=20)]  
 public byte[]  people;   
 } 
------解决方案--------------------关注,帮顶了
------解决方案--------------------1.要使用“ref”必须保证结构中的变量在使用前已经分配了内存空间,楼主你确认一下使用前结构中的变量是否已经完成了赋值。 
 2.public struct SEntity  换成 public static struct SEntity 试试,有可能是你在ref引用时该结构已经被回收了,换成静态结构试试 
------解决方案--------------------c#里没有 typedef