С# - Что означает "\ 0"?
Я играю с Pex, и один из параметров, который он передает в мой метод, - "\0"
.
Что это значит? Моя догадка - пустая строка (""
) на основе содержимого моего метода. Однако, если это то же самое, то почему бы просто не использовать ""
вместо "\0"
?
Кто-нибудь знает, что это такое?
Ответы
Ответ 1
'\ 0' является символом null ". Он использовал для прекращения строк в C и некоторых частях С++. Pex проводит тест, чтобы увидеть, как ваш код обрабатывает нулевой символ, вероятно, ищет уязвимость безопасности Poison Null Byte.
Большинство С# кода нечего бояться; однако, если вы передаете строку в неуправляемый код, у вас могут возникнуть проблемы.
Edit:
Просто, чтобы быть явным... Pex передает строку, содержащую нулевой символ. Это не нулевая ссылка.
Ответ 2
Это строка, содержащая символ '\ 0'. С# не относится к этому особо особым образом - это просто символ Unicode U + 0000. Если вы пишете:
int firstCodePoint = text[0];
то вы найдете firstCodePoint
равным 0.
Ответ 3
Это строка с нулевым символом. Старые библиотеки строк -— как это используется в C или более старых библиотеках С++ -— использовал символ '\ 0', чтобы указать конец строки.
Более новые среды, такие как .Net, используют другую систему, но есть много истории вокруг окончания строки с '\ 0', так что это общая точка ошибки. Тестирование библиотек, таких как Pex, будет использоваться для обеспечения правильной работы вашей программы.
Ответ 4
Строка длиной 1, содержащая символ \u0000 (aka NUL). Этот символ не обрабатывается специально.
В C, который использует \0 для завершения строки, вы также выделяете строку длиной 1. В этом случае стандартные строковые функции будут сообщать длину 0, так как строка содержит \0, а также завершается с ней, Вы можете безопасно изменить str [0] или strncat в него один символ.
Ответ 5
Escape Sequence
\0
Character Name
Null
Unicode Encoding
0x0000
См. эту ссылку.