首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于c中的结构体在.net中怎么定义

2012-01-02 
关于c中的结构体在.net中如何定义?typedefstruct{charname[40]//姓名charsex[10]//性别charpeople[20]/

关于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

热点排行