stringbuilder contre chaîne concat
Dans mon projet, je suis en boucle sur un dataview résultat.
string html =string.empty;
DataView dV = data.DefaultView;
for(int i=0;i< dV.Count;i++)
{
DataRowView rv = dV[i];
html += rv.Row["X"].Tostring();
}
Nombre de lignes dans vq toujours être 3 ou 4.
Est-il préférable d'utiliser la chaîne concat += opearator ou StringBuilder pour ce cas et pourquoi?
source d'informationauteur Niraj Choubey
Vous devez vous connecter pour publier un commentaire.
Je voudrais utiliser
StringBuilder
ici, juste parce qu'il décrit ce que vous faites.Pour une simple concaténation de 3 ou 4 cordes, il ne sera probablement pas faire de différence significative, et la concaténation de chaîne peut même être légèrement plus rapide, mais si vous vous trompez, et il y a beaucoup de lignes,
StringBuilder
commencera à obtenir beaucoup plus efficace, et c'est toujours plus descriptif de ce que vous faites.Sinon, vous pouvez utiliser quelque chose comme:
Notez que vous n'avez pas toute sorte de séparateur entre les cordes pour le moment. Êtes-vous sûr que ce que vous voulez? (Notez également que votre code ne fait pas beaucoup de sens à l'instant - vous ne l'utilisez pas
i
dans la boucle. Pourquoi?)J'ai un article sur la concaténation de chaîne qui va plus dans le détail sur pourquoi il vaut la peine de l'aide
StringBuilder
et quand.EDIT: Pour ceux qui doutent que la concaténation de chaîne peut être plus rapide, voici un test - volontairement "méchant" de données, mais juste pour prouver que c'est possible:
Résultats sur ma machine (compilé avec
/o+ /debug-
):J'ai couru plusieurs fois, y compris l'inversion de l'ordre des tests, et les résultats sont cohérents.
StringBuilder est recommandé.. pourquoi ne pas vous faire une analyse pour vous-même et de décider ensuite ce qui est le mieux pour vous..
À partir de la Documentation:
Donc dans votre cas, je dirais que la Chaîne est mieux.
EDIT:
Que ce n'est pas la fin de disscussion, de toute façon, je vous recommande de vérifier combien de opaeration avez-vous en moyenne et de tester la performance de chacun d'entre eux à comparer les résultats.
Cochez cette lien sympa sur cette question, y compris certains de test de performance du code.
StringBuilder pour vous. Chaîne sont immuables, n'oubliez pas !
EDIT: Pour les 3-4 lignes, la concaténation sera un choix préféré que Jon Skeet a dit dans sa réponse
StringBuilder est recommandé. Il est mutable. Elle doit aussi beaucoup moins de stress sur l'allocateur de mémoire 🙂
stringbuilder est ce que vous cherchez. En général, si il y a une fonction pour certains emplois essayer de l'utiliser au lieu d'écrire une procédure qui fait à peu près le même travail.