3

char *文字列オブジェクトをC#.Net に保存したいのですが、どうすればそれを達成できますか?

私の機能は

xyz(char *c)
{
}

この文字列を引数としてこの関数に渡したい:

string s = "Hello"

C# で安全でないコードを使用しています。

4

2 に答える 2

2
string s = "Hello";
fixed (char* ptr = s) {
    xyz(ptr);
}

アドレスはブロックの期間中のみ固定されるため、実際にはそのポインターを (フィールドなどに)格納しないでください。ただし、内部では問題なく使用できます。fixedxyz

ただ... 優しくしてください。s の変異stringはかなり危険です。

また、コメントに記載されているように、xyz(ptr, s.Length)強くお勧めします。

于 2013-03-08T13:30:14.270 に答える
0

文字列は配列として扱われ、char *は文字列の最初のインデックスを指すため、関数をxyz(文字列)として呼び出すことができます。私はそれがうまくいくはずだと思います

于 2013-03-08T13:23:34.553 に答える