Condividi tramite


DA0001: Utilizzare StringBuilder per le concatenazioni

ID regola

DA0001

Category

Utilizzo di .NET Framework

Metodi di profilatura

Campionamento

Strumentazione

Messaggio

Considerare l'utilizzo di StringBuilder per le concatenazioni di stringhe

Tipo messaggio

Avviso

Causa

Le chiamate a System.String.Concat sono una percentuale significativa dei dati di profilatura. Considerare l'utilizzo della classe StringBuilder per costruire stringhe da più segmenti.

Descrizione della regola

Un oggetto String non è modificabile. Pertanto, qualsiasi modifica alla stringa crea un nuovo oggetto stringa e il Garbage Collection dell'originale. Questo comportamento è lo stesso sia se si chiama in modo esplicito String.Concat sia se si utilizzano gli operatori di concatenazione di stringhe quali + o + =.. Le prestazioni del programma possono calare se questi metodi vengono chiamati con frequenza, ad esempio quando vengono aggiunti caratteri a una stringa in un ciclo ridotto.

La classe StringBuilder è un oggetto modificabile e, a differenza di System.String, la maggior parte dei metodi di StringBuilder che modificano un'istanza di questa classe restituisce un riferimento a quella stessa istanza. È possibile inserire caratteri o aggiungere testo in coda a un'istanza di StringBuilder e rimuovere o sostituire i caratteri nell'istanza senza dover allocare una nuova istanza ed eliminare l'istanza originale.

Come esaminare un avviso

Fare doppio clic sul messaggio nella finestra Elenco errori per passare a Visualizzazione Dettagli funzione dei dati di profilo di campionamento. Trovare le sezioni del programma che fanno maggior uso della concatenazione di stringhe. Utilizzare la classe StringBuilder per le modifiche di stringa complesse, comprese le operazioni frequenti di concatenazione di stringhe.

Per ulteriori informazioni sull'utilizzo delle stringhe, vedere la sezione Operazioni con stringhe del Capitolo 5 intitolato Come migliorare le prestazioni del codice gestito nella libreria Microsoft Patterns and Practices (le pagine potrebbero essere in inglese).