C#LPWStr的不安全上下文/指针类型 假设我们有一个不安全的上下文,因为我希望有一个指针指向WCARHART参数,它是从非托管C++代码传递的。例如: unsafe public(int* A, ???* B) { _myInt = A; _myString = B; }

C#LPWStr的不安全上下文/指针类型 假设我们有一个不安全的上下文,因为我希望有一个指针指向WCARHART参数,它是从非托管C++代码传递的。例如: unsafe public(int* A, ???* B) { _myInt = A; _myString = B; },c#,pointers,unsafe,wchar-t,C#,Pointers,Unsafe,Wchar T,int参数一切正常,但是???*类型呢? 我知道,要为该方法将wchar#t封送到C#string类型,可以在参数B之前写入[MarshalAs(UnmanagedType.LPWStr)]。 但是我需要B的某种本机指针类型,以便将此指针链接到_myString字段。 C中是否有类似于wchar#t的东西,或者我还可以做些什么来将指针B存储在类中的其他位置? 谢谢 Jurgen除非在构造字符串时c#复制指针后面的字符串时遇到问题。。。你可以这样做: public static unsafe in

int参数一切正常,但是???*类型呢? 我知道,要为该方法将wchar#t封送到C#string类型,可以在参数B之前写入[MarshalAs(UnmanagedType.LPWStr)]。 但是我需要B的某种本机指针类型,以便将此指针链接到_myString字段。 C中是否有类似于wchar#t的东西,或者我还可以做些什么来将指针B存储在类中的其他位置? 谢谢
Jurgen

除非在构造字符串时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));
}

此处使用的构造函数记录在

中,您是否尝试过使用IntPtr?这通常是我用来传递C++的任何指针,我不想把它们弄乱,除非以后把它们传给C++。