aufzählung
-
PapaNoah schrieb:
...
Stimmt, die 0 Stellen habe ich übersehen. Noch das "\r\n" hinten dran und die Lösung sollte klappen.
-
Warum habt ihr das 'string send;' außerhalb?
Es wird doch bei jedem Format eh ein neuer String erstellt.Das 'var send' innerhalb der schleife wäre sogar besser da es den Scope der Variable 'send' verringert, das beuge missbrauch und Fehler vor (Short span ist immer besser, einfach sauberer).
for(int i = 0; i < 200; ++i) { var send = string.Format("TS{0}\r\n", i.ToString("D4")); mysrl.Send(ASCIIEncoding.ASCII.GetBytes(send)); }
-
*noch eine Version in die Runde wirft*
for(int i = 0; i < 200; ++i) { var send = string.Format("TS{0:D4}\r\n", i); mysrl.Send(ASCIIEncoding.ASCII.GetBytes(send)); }
Irgendwie erstaunlich auf wieviele Arten man so einen String zusammenbauen kann.
Grüssli
-
Dravere schrieb:
*noch eine Version in die Runde wirft*
for(int i = 0; i < 200; ++i) { var send = string.Format("TS{0:D4}\r\n", i); mysrl.Send(ASCIIEncoding.ASCII.GetBytes(send)); }
Irgendwie erstaunlich auf wieviele Arten man so einen String zusammenbauen kann.
Grüssli
Deine ist jedoch die korrekteste.
@ichbrauchehilfe: Die Lösung von PapaNoah ist zwar auch korrekt, jedoch birgt sie ein Problem.
String sind in der .NET Welt immutable Objekte. Weitere Informationen was daran so blöd gemacht ist, kannst du mal bei mir aufen Blog nachlesen:
http://www.blog-dotnetprogrammierung.de/?p=40
-
Firefighter schrieb:
Dravere schrieb:
*noch eine Version in die Runde wirft*
for(int i = 0; i < 200; ++i) { var send = string.Format("TS{0:D4}\r\n", i); mysrl.Send(ASCIIEncoding.ASCII.GetBytes(send)); }
Irgendwie erstaunlich auf wieviele Arten man so einen String zusammenbauen kann.
Grüssli
Deine ist jedoch die korrekteste.
Wenn man von dem Smilie absieht und ihn durch den Ursprungstext (
) ersetzt, dann ja.
-
Firefighter schrieb:
@ichbrauchehilfe: Die Lösung von PapaNoah ist zwar auch korrekt, jedoch birgt sie ein Problem.
String sind in der .NET Welt immutable Objekte. Weitere Informationen was daran so blöd gemacht ist, kannst du mal bei mir aufen Blog nachlesen:
http://www.blog-dotnetprogrammierung.de/?p=40Trifft hier nicht zu! Schau dir mal die Überladungen von
String.Concat
an. Wie du bemerken wirst, gibt es Überladungen für bis zu 4 String Objekte. Das sind optimierte Methoden, welche auch vom Kompiler benutzt werden. Wenn du also 4 String Objekte addierst, dann werden diese optimiert zusammengesetzt. Erst wenn es mehr Objekte sind, kommt es zu Problemen, oder wenn man z.B. wie im Blog+=
über eine Schleife oder sowas nutzt.Zusätzliche Informationen findest du u.a. hier:
http://blogs.msdn.com/b/sundararajan/archive/2008/07/21/inside-string-concatenation.aspxGrüssli
-
Firefighter schrieb:
@ichbrauchehilfe: Die Lösung von PapaNoah ist zwar auch korrekt, jedoch birgt sie ein Problem.
String sind in der .NET Welt immutable Objekte. Weitere Informationen was daran so blöd gemacht ist, kannst du mal bei mir aufen Blog nachlesen:
http://www.blog-dotnetprogrammierung.de/?p=40Hmm interessant, dessen war ich mir bisher nie bewusst, ich mache das schon seit 2 Jahren so. Werd ich mir aber merken!
-
Dravere schrieb:
Firefighter schrieb:
@ichbrauchehilfe: Die Lösung von PapaNoah ist zwar auch korrekt, jedoch birgt sie ein Problem.
String sind in der .NET Welt immutable Objekte. Weitere Informationen was daran so blöd gemacht ist, kannst du mal bei mir aufen Blog nachlesen:
http://www.blog-dotnetprogrammierung.de/?p=40Trifft hier nicht zu! Schau dir mal die Überladungen von
String.Concat
an. Wie du bemerken wirst, gibt es Überladungen für bis zu 4 String Objekte. Das sind optimierte Methoden, welche auch vom Kompiler benutzt werden. Wenn du also 4 String Objekte addierst, dann werden diese optimiert zusammengesetzt. Erst wenn es mehr Objekte sind, kommt es zu Problemen, oder wenn man z.B. wie im Blog+=
über eine Schleife oder sowas nutzt.Zusätzliche Informationen findest du u.a. hier:
http://blogs.msdn.com/b/sundararajan/archive/2008/07/21/inside-string-concatenation.aspxGrüssli
Muss ehrlich sagen, ich weiß grad nicht was du meinst?
Ich hab ja nicht gesagt das String.Format schlecht ist, weil die bennutzen ja auch den StringBuilder, und genauso wie du sagtest, String.Concat ist dafür auch optimiert. Kannst du mir deshalb nochmal sagen auf was du dich bezogen hast.
-
Er meint damit das der Compiler es so optimieren kann das aus
"a" + "b" + "c" ein
string.Concat("a", "b", "c"); wird, da es für Concat Überladungen gibt mit bis 4 Parameter.Ich selber würde trotzdem die + dort vermeiden, dann ist man Konsistent und braucht nicht das Hintergrundwissen das es der Compiler schon optimieren wird.
-
Geschmacksache, ich arbeite lieber mit dem +, sofern es sich um eine kleine Anzahl von Strings handelt...
-
In dieser Größenordnung ist es definitiv Geschmackssache.
Ich sehe das, wie gesagt, eher aus der Sicht der Konsistenz.
Hier mit + und dort mit Format, Concat oder StringBuilder, das kann verwirren warum ich es unterschiedlich gemacht habe.
Es ist auch eine gewisse Gefahr vorhanden die man nicht leugnen kann, und zwar wenn man Refactort (kann man das so schreiben?), wenn sich die Methode etwas ändert sodass die + doch nicht mehr so klein sind, dann kann das schnell übersehen werden.