如果我的结构中有一个或多个System.String,则此错误将停止编译 有没有其他方法来存储字符串?
我尝试过这样的事情:
private long _B_ID;
private byte[] _C_Name;
private byte[] _C_Address;
private byte[] _C_Telephone;
但它似乎不起作用。
答案 0 :(得分:5)
如果结构是blittable,则只能获取结构的地址,即它不包含引用 见Blittable and Non-Blittable Types(MSDN)
答案 1 :(得分:1)
即使您使用“不安全”,也无法声明指向非固定类型的指针。要删除此错误,您必须指定数组的大小以及关键字fixed。
例如,_C_Name包含25个字节。所以声明为:
private fixed byte _C_Name[25];
字符串是固定类型的,因此当您将它们声明为String时,您不会收到错误。 希望它适合你!
问候!
答案 2 :(得分:0)
尝试MarshalAs
属性:
struct Foo
{
[MarshalAs(UnmanagedType.LPStr]
string s;
}