假设我们有一个不安全的上下文,因为我希望有一个指向wchar_t参数的指针,该参数是从非托管C ++代码传递的。例如:
unsafe public(int* A, ???* B)
{
_myInt = A;
_myString = B;
}
使用int参数一切都很好,但是??? *类型怎么样? 我知道要将wchar_t编组为此方法的C#字符串类型,可以在参数B之前编写[MarshalAs(UnmanagedType.LPWStr)]。 但我需要某种B的本机指针类型,以便将此指针链接到_myString字段。 在C#中是否存在类似wchar_t的东西,或者我还能做些什么来将指针B存储在类的其他地方? 谢谢, 尔根
答案 0 :(得分:1)
除非你在构造一个字符串时c#复制指针后面的字符串有问题...你可以像这样把它拉出来:
public static unsafe int Strlen(char* start)
{
var eos = start;
while (*(eos++) != 0);
return (int) ((eos - start) - 1);
}
unsafe public(int* A, char* B)
{
_myInt = A;
_myString = new String(B, 0, Strlen(B));
}
此处使用的构造函数记录在MSDN
中