Compartir a través de


DA0001: Utilizar StringBuilder para las concatenaciones

Identificador de regla

DA0001

Categoría

Uso de .NET Framework

Métodos de generación de perfiles

Muestreo

Instrumentación

Mensaje

Considerar el uso de StringBuilder para las concatenaciones de cadena

Tipo de mensaje

Advertencia

Motivo

Las llamadas a System.String.Concat constituyen una proporción considerable de los datos de generación de perfiles.Consider la opción de usar la clase StringBuilder para construir cadenas a partir de varios segmentos.

Descripción de la regla

Un objeto String es inmutable.Por consiguiente, cualquier modificación en la cadena crea un nuevo objeto de cadena y la recolección de elementos no utilizados del original.Este comportamiento es el mismo tanto si llama a String.Concat explícitamente como si usa los operadores de concatenación de cadenas, como + o + =..El rendimiento del programa puede disminuir si se llama a estos métodos con frecuencia, como sucede cuando se agregan caracteres a una cadena en un bucle ajustado.

La clase StringBuilder es un objeto mutable y, a diferencia de System.String, la mayoría de los métodos en StringBuilder que modifican una instancia de esta clase devuelven una referencia a esa misma instancia.Puede insertar caracteres o anexar texto a una instancia StringBuilder, así como quitar o reemplazar caracteres en la instancia sin necesidad de asignar una nueva instancia y eliminar la instancia original.

Cómo investigar una advertencia

Haga doble clic en el mensaje de la ventana Lista de errores para navegar a la Vista Detalles de la función de los datos de muestreo de perfiles.Encuentre las secciones del programa que usan más frecuentemente concatenación de cadenas.Use la clase StringBuilder para manipulaciones de cadenas complejas, incluyendo operaciones de concatenación de cadena frecuentes.

Para obtener más información acerca de cómo trabajar con cadenas, vea la sección Operaciones de cadenas del Chapter 5 - Improving Managed Code Performance en la biblioteca Microsoft Patterns and Practices.