Por qué usar string.Empty over “” cuando se asigna a un objeto string

13

He estado ejecutando StyleCop sobre mi código y una de las recomendaciones de 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, ¿esto se considera la mejor práctica? Supongo que no hay una diferencia de compilación entre las dos declaraciones, así que solo puedo pensar que es una cuestión de legibilidad.

SO question and answer

Jon Skeet responde a la pregunta

    
pregunta dreza 19.03.2012 - 21:19

4 respuestas

11

Una razón válida es que deja claro que no se trata de un error tipográfico ni de un marcador de posición, que realmente pretendía usar la cadena vacía aquí.

No sé si se considera "mejor práctica".

    
respondido por el Philip 19.03.2012 - 21:23
7

Me imagino que hay dos razones, una para facilitar la lectura y dos para un aumento de rendimiento menor.

La facilidad de lectura es fácil: es mucho más rápido detectar string.Empty que "" . Buscar string.Empty también suele ser más fácil y quizás más preciso que buscar el literal. También aclara la intención: no solo hiciste un error tipográfico u olvidaste terminar algo, realmente querías una cadena vacía.

El motivo de rendimiento se debe a interning . Usted ve, el tiempo de ejecución mantiene una tabla de cadenas utilizadas anteriormente para que pueda hacer comparaciones de cadenas sin hacer una verificación de carácter por carácter. string.Empty ya es una referencia interna a "" donde, al escribir el literal, es posible que no le proporcione la versión interna, lo que provoca un leve impacto en el rendimiento.

    
respondido por el CodexArcanum 19.03.2012 - 21:27
4

string.Empty gana en un caso realmente de esquina, lo que puede llevar a algún error mágico y es realmente difícil de depurar:

Si hay un espacio de ancho cero en "" .

    
respondido por el Yuby 07.03.2018 - 10:31
0

Según la documentación que encontré, tiene que ver con lo que emite el compilador.

Una búsqueda rápida revela: enlace

Por qué está archivado en "Reglas de legibilidad" con esa descripción es desconcertante.

    
respondido por el brian 19.03.2012 - 21:26

Lea otras preguntas en las etiquetas