C# - O que “ 0” equivale a?
-
21-09-2019 - |
Pergunta
Estou brincando com Pex E um dos parâmetros que passa para o meu método é "\0"
.
O que isso significa? Meu palpite é uma corda vazia (""
) com base no conteúdo do meu método. No entanto, se for o mesmo, então por que não apenas usar ""
ao invés de "\0"
?
Alguém sabe o que é?
Solução
' 0' é um "caráter nulo". É usado para rescindir seqüências de caracteres em C e algumas partes de C ++. Pex está fazendo um teste para ver como seu código lida com o caráter nulo, provavelmente procurando o Byte nulo de veneno Exploração de segurança.
A maioria do código C# não tem nada a temer; Se você passar sua string para o código não gerenciado, no entanto, poderá ter problemas.
Editar:
Só para ser explícito ... Pex está passando uma string contendo um caractere nulo. Isto é não uma referência nula.
Outras dicas
É uma string que contém o caractere ' 0'. C# não trata isso de maneira particularmente especial - é apenas o caractere unicode u+0000. Se você escreve:
int firstCodePoint = text[0];
Então você encontrará firstCodePoint
é 0.
É uma corda com um personagem nulo. Bibliotecas de string mais antigas - como as usadas nas bibliotecas C ou mais antigas - usaram o caractere ' 0' para indicar o final da string.
Ambientes mais recentes como .NET usam um sistema diferente, mas há muita história em torno de terminar uma string com ' 0', de modo que é um ponto de erro comum. Bibliotecas de teste como o PEX o usarão para garantir que seu programa lida corretamente.
Uma sequência de comprimento 1, contendo o caractere u0000 (também conhecido como nul). Este personagem não é tratado especialmente.
Em C, que usa 0 para encerrar a string, você também aloca uma sequência de comprimento 1. Nesse caso, as funções de string padrão relatarão um comprimento de 0, uma vez que a string contém 0, além de ser encerrada. Você pode modificar com segurança o STR [0] ou um único caractere nele.
Escape Sequence
\0
Character Name
Null
Unicode Encoding
0x0000