我正在尝试使用描述here的ReadUsingPointer方法为大型二进制文件提供一个轻型二进制读取器。
但是,我试图传递给它的结构包含字符串。我想知道如何绕过这个并避免“无法获取地址,获取大小,或声明指向托管类型的指针”消息
到目前为止,我尝试了以下方法但没有成功(可能有访问这些字段的问题?):
[MarshalAs(UnmanagedType.LPStr)]
string s;
我必须指定这些字符串字段在读取后使用,并且在读取字节时未分配,因此我在阅读时不需要它们(我可以使用没有这些字段的中间结构但是对于遗留问题我不能这样做。)
答案 0 :(得分:0)
您的非托管结构是否包含字符数组?实际上没有任何实际的方法(我知道)在托管端以与批量复制兼容的方式对其进行建模,因为字符串和数组都是托管端的引用类型 - 如果你声明了一个字符串一个.NET结构然后实际的字符并不真正驻留在那里 - 只有一个字符串指针。与数组相同。