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