c#不安全的上下文/ LPWStr指针类型

本文关键字:LPWStr 指针 类型 上下文 不安全 | 更新日期: 2023-09-27 18:09:35

假设我们有一个不安全的上下文,因为我想有一个指向从非托管c++代码传递的wchar_t参数的指针。例如:

unsafe public(int* A, ???* B)
{
    _myInt = A;
    _myString = B;
}

int形参一切都很好,但是???*类型?我知道为了将wchar_t封送为c#字符串类型,可以在参数B之前写入[MarshalAs(UnmanagedType.LPWStr)]。但我需要某种本地指针类型的B为了链接这个指针到_myString字段。c#中是否有类似wchar_t的东西,或者我可以做些什么来将指针B存储在类的其他地方?谢谢,尤尔根•

c#不安全的上下文/ LPWStr指针类型

除非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

中有文档说明