C# - Что делает “\\0”, приравниваются к?

Я играю с Pex и одним из параметров, которые он передает в мой метод, "\0".

Что это означает? Мое предположение является пустой строкой ("") на основе содержания моего метода. Однако, если это - то же тогда, почему не просто используют "" вместо "\0"?

Кто-либо знает, каково это?

21
задан Vaccano 18 February 2010 в 22:53
поделиться

4 ответа

'\ 0' - это « нулевой символ ». Он используется для завершения строк в C и некоторых частях C ++. Pex проводит тест, чтобы увидеть, как ваш код обрабатывает нулевой символ, вероятно, ищет эксплойт безопасности Poison Null Byte .

Большинству кода C # нечего бояться; Однако если вы передадите свою строку в неуправляемый код, у вас могут возникнуть проблемы.

Редактировать:

Чтобы быть явным ... Pex передает строку, содержащую нулевой символ. Это не пустая ссылка.

39
ответ дан 29 November 2019 в 19:59
поделиться

Это строка, содержащая символ '\ 0'. C # не обрабатывает это каким-либо особым образом - это просто символ Юникода U + 0000. Если вы напишете:

int firstCodePoint = text[0];

, то обнаружите, что firstCodePoint равно 0.

5
ответ дан 29 November 2019 в 19:59
поделиться

Это строка с нулевым символом. Старые библиотеки строк - например, используемые в C или старых библиотеках C++ - использовали символ '\0' для обозначения конца строки.

Более новые среды, такие как .Net, используют другую систему, но вокруг завершения строки символом '\0' существует много истории, так что это распространенная точка ошибки. Тестовые библиотеки, такие как Pex, будут использовать его, чтобы убедиться, что ваша программа правильно его обрабатывает.

3
ответ дан 29 November 2019 в 19:59
поделиться

Строка длины 1, содержащая символ \u0000 (он же NUL). Этот символ не обрабатывается специальным образом.

В языке C, который использует \0 для завершения строки, вы также выделяете строку длиной 1. В этом случае стандартные строковые функции сообщат длину 0, поскольку строка содержит \0, а также завершается им. Вы можете безопасно модифицировать str[0], или вписать в нее один символ.

2
ответ дан 29 November 2019 в 19:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: