char *
文字列オブジェクトをC#.Net に保存したいのですが、どうすればそれを達成できますか?
私の機能は
xyz(char *c)
{
}
この文字列を引数としてこの関数に渡したい:
string s = "Hello"
C# で安全でないコードを使用しています。
string s = "Hello";
fixed (char* ptr = s) {
xyz(ptr);
}
アドレスはブロックの期間中のみ固定されるため、実際にはそのポインターを (フィールドなどに)格納しないでください。ただし、内部では問題なく使用できます。fixed
xyz
ただ... 優しくしてください。s の変異string
はかなり危険です。
また、コメントに記載されているように、xyz(ptr, s.Length)
強くお勧めします。
文字列は配列として扱われ、char *は文字列の最初のインデックスを指すため、関数をxyz(文字列)として呼び出すことができます。私はそれがうまくいくはずだと思います