0

假设我们有一个不安全的上下文,因为我想要一个指向从非托管 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 存储在类的其他位置?谢谢,于尔根

4

1 回答 1

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中

于 2011-10-03T13:19:02.313 回答