319 votes

Quelle est la meilleure méthode de concaténation de chaînes utilisant C #?

Quel est le moyen le plus efficace de concaténer les chaînes?

286voto

Lee Points 6659

Rico Mariani, l' .Performance NETTE gourou, avait un article sur ce sujet. Ce n'est pas aussi simple qu'on pourrait le soupçonner. Le conseil de base est ceci:

Si votre motif ressemble:

x = f1(...) + f2(...) + f3(...) + f4(...)

c'est un concat et c'est zippy, StringBuilder ne sera probablement pas aider.

Si votre motif ressemble:

if (...) x += f1(...)
if (...) x += f2(...)
if (...) x += f3(...)
if (...) x += f4(...)

alors, vous voulez probablement StringBuilder.

165voto

La méthode StringBuilder.Append() est beaucoup mieux que l'utilisation de l'opérateur +. Mais j'ai trouvé que, lorsque les concaténations sont inférieures à 1000, String.Join() est encore plus efficace que StringBuilder .

 StringBuilder sb = new StringBuilder();
sb.Append(someString);
 

Le seul problème avec String.Join est que vous devez concaténer les chaînes avec un délimiteur commun.

 string key = String.Join("_", new String[] 
{ "Customers_Contacts", customerID, database, SessionID });
 

96voto

Mr_Green Points 8867

Il existe 5 types de concaténations de chaîne:

  1. à l'aide de plus (+) symbole.
  2. à l'aide de string.Concat().
  3. à l'aide de string.Format().
  4. à l'aide de string.Append().
  5. à l'aide de stringBuilder.

Dans une expérience, il a été prouvé que l' string.Concat() est la meilleure façon de l'aborder si les cordes sont moins de 1000(environ) et si les cordes sont plus de 1000 alors stringBuilder doit être utilisé.

Pour plus d'informations, consultez ce site.

66voto

palehorse Points 8268

De Chinh Faire - StringBuilder n'est pas toujours plus rapide:

Règles de base

  • Lors de la concaténation de trois dynamiques de la chaîne de valeurs ou moins, de l'utilisation traditionnelle de concaténation de chaîne.

  • Lors de la concaténation de plus de trois dynamiques de la chaîne de valeurs, utiliser StringBuilder.

  • Lors de la construction d'une chaîne de caractères à partir de plusieurs littéraux de chaîne, utilisez le @ littéral de chaîne ou de la ligne opérateur+.

La plupart du temps StringBuilder est votre meilleur pari, mais il y a des cas, comme indiqué dans ce post que vous devriez au moins penser à chaque situation.

12voto

Adam V Points 2774

Si vous fonctionnez dans une boucle, StringBuilder est probablement la voie à suivre ; il vous permet d’économiser les frais généraux de la création de nouvelles chaînes régulièrement. Dans le code, qui courra seulement une fois, cependant, String.Concat est probablement très bien.

Cependant, Rico Mariani (gourou d’optimisation .NET) composée d’un questionnaire dans lequel il déclarait à la fin que, dans la plupart des cas, il recommande String.Format.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X