С# - Что означает "\ 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 в него один символ.