Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Errrhhh ..... CSharp or VB
Message
De
27/09/2011 02:04:46
 
 
À
26/09/2011 03:32:17
Information générale
Forum:
ASP.NET
Catégorie:
Autre
Divers
Thread ID:
01524423
Message ID:
01524796
Vues:
81
>
>AFAIK, there's no point in using a StringBuilder for something like this:
string s = "Tom" + "Dick"+"Harry"+"AsManyMoreAsYouLike"
since you are only assigning to a string once. But, since strings are immutable, if you do this:
string s = "Tom";
>s += "Dick";
>s += "Harry";
then you are, in effect, creating a new 's' and discarding the old one with every addition. In that situation using a StingBuilder comes into its own....


I'm not so sure, Viv

To me the two above result in pretty much the same, where the first does not assign the intermediate results to s, but the intermediate results are 'calculated' in both cases

Explanation

The + operator is a binary operator, ie takes two operands

The reason that we can write
string s = "Tom" + "Dick"+"Harry"+"AsManyMoreAsYouLike;
is that there is something like associativity which is a convenient way to drop the parentheses.
I take it that the + operator is left associative, so the expression boils down to
string s = ( ( ("Tom" + "Dick")+"Harry" ) +"AsManyMoreAsYouLike ) ;
In prefix notation
string s = +( +(  +("Tom", "Dick"), "Harry") , "AsManyMoreAsYouLike)
Which means that in the above case the + operator will be called 3 times with two operands. So it must return intermediate results, which will be stored on the heap since string is a reference type

The two intermediate results
"TomDick" and "TomDickHarry" will be collected later
Gregory
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform