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 に答える