He estado ejecutando StyleCop sobre mi código y una de las recomendaciones SA1122 es usar string.Empty en lugar de "" al asignar una cadena vacía a un valor.
Mi pregunta es por qué se considera esta mejor práctica. O, ¿se considera esta mejor práctica? Supongo que no hay diferencia de compilación entre las dos declaraciones, por lo que solo puedo pensar que es una cuestión de legibilidad.
""
, pero nostring.Empty
Respuestas:
Una razón válida es que deja en claro que no se trata de un error tipográfico o de marcador de posición, que realmente quisiste usar la cadena vacía aquí.
No sé si se considera "mejor práctica".
fuente
Me imagino que hay dos razones, una para la legibilidad y dos para un aumento de rendimiento menor.
La legibilidad es fácil: es mucho más rápido de detectar
string.Empty
que""
. La búsquedastring.Empty
también suele ser más fácil y tal vez más precisa que buscar el literal. También aclara la intención: no solo cometiste un error tipográfico u olvidaste terminar algo, realmente querías una cadena vacía.La razón del rendimiento se debe a la pasantía . Verá, el tiempo de ejecución mantiene una tabla de cadenas utilizadas anteriormente para que pueda hacer rápidamente comparaciones de cadenas sin hacer una verificación carácter por carácter.
string.Empty
ya es una referencia interna sobre""
dónde, ya que escribir el literal puede no darle la versión interna, lo que provoca un ligero impacto en el rendimiento.fuente
string.Empty
gana en un caso realmente de esquina, lo que puede conducir a algún error mágico y muy difícil de depurar:Si hay un espacio de ancho cero en
""
.fuente
Según alguna documentación que encontré, tiene que ver con lo que emite el compilador.
Una búsqueda rápida revela: http://stylecop.soyuz5.com/SA1122.html
Por qué está archivado bajo "Reglas de legibilidad" con esa descripción es desconcertante.
fuente