LP#的C#不安全上下文/指针类型

时间:2011-09-22 14:34:46

标签: c# pointers unsafe wchar-t

假设我们有一个不安全的上下文,因为我希望有一个指向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存储在类的其他地方? 谢谢, 尔根

1 个答案:

答案 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