remarks example cref c# string escaping pex pex-and-moles

example - remarks c#



C#- ¿A qué equivale “/ 0”? (5)

Estoy jugando con Pex y uno de los parámetros que pasa a mi método es "/0" .

Qué significa eso? Mi conjetura es una cadena vacía ( "" ) basada en el contenido de mi método. Sin embargo, si es el mismo, ¿por qué no usar "" lugar de "/0" ?

Alguien sabe lo que es?


''/ 0'' es un " carácter nulo ". Se utiliza para terminar cadenas en C y algunas partes de C ++. Pex está haciendo una prueba para ver cómo su código maneja el carácter nulo, probablemente buscando la vulnerabilidad de seguridad de Poison Null Byte .

La mayoría del código C # no tiene nada que temer; Sin embargo, si pasa su cadena a un código no administrado, puede tener problemas.

Editar:

Solo para ser explícito ... Pex está pasando una cadena que contiene un carácter nulo. Esto no es una referencia nula.


Es una cadena con un carácter nulo. Las bibliotecas de cadenas más antiguas, como la que se usa en C o las bibliotecas de C ++ anteriores, utilizaban el carácter ''/ 0'' para indicar el final de la cadena.

Los entornos más nuevos, como .Net, utilizan un sistema diferente, pero hay un montón de historial en torno a la finalización de una cadena con ''/ 0'', por lo que es un punto de error común. Las bibliotecas de prueba como Pex lo usarán para asegurarse de que su programa lo maneje correctamente.


Es una cadena que contiene el carácter ''/ 0''. C # no trata esto de ninguna manera particularmente especial, es solo el carácter Unicode U + 0000. Si tú escribes:

int firstCodePoint = text[0];

entonces encontrarás que firstCodePoint es 0.


Una cadena de longitud 1, que contiene el carácter / u0000 (también conocido como NUL). Este personaje no es tratado especialmente.

En C, que usa / 0 para terminar la cadena, también asigna una cadena de longitud 1. En este caso, las funciones de cadena estándar reportarán una longitud de 0, ya que la cadena contiene / 0, además de terminarse con ella. Podrías modificar con seguridad str [0], o strncat un solo carácter en él.


Escape Sequence /0 Character Name Null Unicode Encoding 0x0000

Vea este enlace.