C#の - に「\ 0」等式を何?
-
21-09-2019 - |
質問
私はペックスとそれが中に入るのいずれかのパラメータで遊んでいます私の方法は"\0"
です。
それはどういう意味?私の推測では、私の方法の内容に基づいて、空の文字列(""
)です。それが同じである場合は、その理由だけではなく、""
の"\0"
を使わないのでしょうか?
誰もがそれが何であるかを知っていますか?
解決
'\ 0' "ヌル文字を" です。 Cの文字列とC ++のいくつかの部分を終了するために使われています。 Pexがありそう毒ヌルを探して、あなたのコードは、ヌル文字をどのように処理するかを確認するためにテストを行っていますバイトのセキュリティを悪用します。
ほとんどのC#コードは、恐れることは何もありません。あなたがアンマネージコードへのあなたの文字列を渡す場合は、しかし、あなたは問題があるかもしれません。
の編集の
だけが明示的にする... Pexがヌル文字を含む文字列を渡しています。これは、のないのヌル参照です。
他のヒント
これは、文字「\ 0」を含む文字列です。 C#がどの特に特別な方法でこれを処理しない - それはちょうどユニコード文字U + 0000です。あなたが書く場合:
int firstCodePoint = text[0];
あなたはfirstCodePoint
が0である見つけることができます。
これは、NULL文字を含む文字列です。それは、Cまたは古いC ++ライブラリで使用されるように - - 古い文字列ライブラリは、文字列の終わりを示すために「\ 0」文字を使用していました。
ネットのような新しい環境では、別のシステムを使用しますが、それは誤りの共通点だと、このような「\ 0」で文字列を終了周りの歴史の多くは、そこにあります。 Pexのようなテストライブラリが正常に確認してくださいあなたのプログラムのハンドルにそれを作るためにそれを使用します。
長さ1の文字列(NUL別名)文字\ U0000を含みます。この文字は特別扱いされていません。
文字列を終了するには、\ 0を使用しています。でCは、あなたはまた、文字列はそれで終了しているだけでなく、\ 0が含まれているため、標準の文字列関数は、0の長さを報告します。この場合、長さ1の文字列を割り当てます。あなたが安全にstrの[0]を変更、またはそれに単一の文字をstrncatことができます。
Escape Sequence
\0
Character Name
Null
Unicode Encoding
0x0000