Recentemente mi è stato chiesto quando conviene utilizzare uno StringBuilder piuttosto che concatenare le stringhe con il +. L'argomento è stato affrontato più volte, ma credo sia comunque utile riportare quando dice MSDN, in modo da chiarire la situazione:
String objects are immutable in that they cannot be changed once created. Methods that act on strings actually return new string objects. Therefore, for performance reasons, large amounts of concatenation or other involved string manipulation should be performed with the StringBuilder class.
Chi lavora abitualmente con i database relazionali lo sa bene: non si deve mai utilizzare la clausola SELECT * in una query SQL. I motivi di questa cosa sono diversi, ma uno dei principali riguarda l'efficienza: se si usa l'asterisco, il DBMS deve interrogare i metadati della tabella per sapere quali colonne contiene, quindi è richiesto un tempo di elaborazione maggiore, che si può facilmente evitare indicando espressamente i nome delle colonne da restituire.