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.