¿Por qué no hay ningún Char.Empty como String.Empty?

Resuelto Joan Venge asked hace 14 años • 23 respuestas

¿Hay alguna razón para esto? Lo pregunto porque si necesita usar muchos caracteres vacíos, entonces se encuentra en la misma situación que cuando usa muchas cadenas vacías.

Editar: El motivo de este uso fue el siguiente:

myString.Replace ('c', '')

Así que elimine todas las instancias de 'c' de myString.

Joan Venge avatar Sep 09 '10 00:09 Joan Venge
Aceptado

No existen los caracteres vacíos. Lo más cercano que puede llegar es '\0'el carácter "nulo" Unicode. Dado que puede incrustarlo dentro de cadenas literales o expresarlo por sí solo muy fácilmente, ¿por qué querría un campo separado para ello? Del mismo modo, los argumentos "es fácil de confundir ""y " "" no se aplican a '\0'.

Si pudiera dar un ejemplo de dónde le gustaría usarlo y por qué cree que sería mejor, eso podría ayudar...

Jon Skeet avatar Sep 08 '2010 17:09 Jon Skeet

El motivo de este uso fue el siguiente: myString.Replace ('c', '') elimine todas las instancias de 'c'myString.

Para eliminar un carácter específico de una cadena, puedes usar la sobrecarga de cadena:

 myString = myString.Replace ("c", String.Empty);

Tu declaración

 myString.Replace ('c', '\0')

No eliminará ningún carácter. Simplemente los reemplazará con '\0'(End-Of-String, EOS), con distintas consecuencias. Algunas operaciones de cadenas pueden detenerse al encontrar un EOS, pero en .NET la mayoría de las acciones lo tratarán como cualquier otro carácter. Lo mejor es evitarlo '\0'tanto como sea posible.

ℍ ℍ avatar Sep 08 '2010 18:09 ℍ ℍ

Un char, a diferencia de una cadena, es algo discreto con un tamaño fijo. Una cadena es en realidad un contenedor de caracteres.

Entonces, Char.Empty realmente no tiene sentido en ese contexto. Si tienes un carácter, no está vacío.

Joe avatar Sep 08 '2010 17:09 Joe

No existen los personajes vacíos. Siempre contiene algo . Incluso '\0' es un carácter.

Philippe Leybaert avatar Sep 08 '2010 17:09 Philippe Leybaert