J'ai une variable de chaîne déclarée globalement. Je dois ajouter une sous-chaîne à cette chaîne dynamiquement en fonction de l'entrée de l'utilisateur. Pour ce faire, j'utilise str = str + substring;manipulations de chaînes
Dans ce cas, la chaîne str n'a pas de sens enfin phrase-à-dire., Il n'y a pas d'espace entre le words.to faire sens, j'utilisé au lieu de la déclaration suivante,
str = str + » « + sous-chaîne; ou str = str + substring + "";
ici chaque fois que je dois ajouter de l'espace supplémentaire à la sous-chaîne avant d'ajouter ceci à la chaîne principale où un traitement de chaîne supplémentaire est requis.
Quelqu'un peut-il aider à ce que je peux le faire efficacement?
StringBuilder est peut-être trop puissant si vous ne concaténéz que quelques chaînes de façon peu fréquente en raison du coût de construction. Il était idiomatique d'utiliser le générateur de chaîne pour concaténer les chaînes afin d'éviter la complexité quadratique du pire cas dû à la copie de chaîne, mais les compilateurs C# plus récents sont devenus assez intelligents pour transformer les chaînes de concaténations de chaînes en appels String.Concat de sorte que toute l'opération se fasse en temps linéaire. – Stewart
@Stewart - cela a été le cas pendant un certain temps, mais ne s'applique qu'aux déclarations simples; aussi, j'ai déjà souligné les deux différents scénarios ici (basé sur la fréquence) –
Oh oui - je n'ai pas lu la première phrase correctement. Merci de confirmer. Je pense que cela vaut la peine de faire valoir ce point. Dans beaucoup d'endroits, il est toujours considéré comme une question de foi aveugle que l'on devrait éviter la concaténation de chaînes en faveur de StringBuilder partout, même si StringBuilder est susceptible d'être beaucoup plus cher. La raison de la complexité quadratique est toujours citée même si elle n'a pas été vraie depuis un certain temps, comme vous le dites. – Stewart