Frage

  

Mögliche Duplizieren:
   String vs String

ich nur einige der Bücher neu aufgelegt, die ich VB.NET abholen verwendet. Ich bin nicht sicher, ich habe diese habe in meinem Kopf, verstehen, wie / was String ist.

Was ist die Anleitung für die Verwendung von? Ist es am besten, es zu benutzen, wenn Sie sind verketten 2 Strings oder 50?

Oder, wenn die die gesamte Saitenlänge größer als 128 Zeichen?

Oder werden Sie einen Leistungsvorteil zu sehen, wenn Sie es verwenden Strings zusammen hinzufügen?

In diesem Fall ist es besser, eine Stringbuilder-Instanz zu verwenden, um eine SQL-Anweisung als string.format("Select * from x where y = {0}",1) zu bauen?

Es fiel mir immer, dass eine weitere Variable deklarieren und mit einem Namensraum für kleine Zeichenfolge Verkettungen nicht von Vorteil ist, aber ich bin jetzt nicht sicher.

Es tut uns Leid, viel Dokumentation sagt Ihnen, was zu verwenden, nicht nur, was das Beste.

War es hilfreich?

Lösung

Ich habe eine Artikel zu diesem Thema sehr bekam. Zusammengefasst (vom unteren Rand der Seite kopiert):

  • Auf jeden Fall String verwenden, wenn Sie in einer nicht-trivialen Schleife sind verketten - vor allem, wenn Sie nicht sicher wissen (zum Zeitpunkt der Kompilierung), wie viele Wiederholungen Sie durch die Schleife machen werden. Zum Beispiel, in einer Zeit, eine Datei einen Zeichenlese, einen String Aufbau, wie Sie den Operator + = gehen mit potenziell Leistung Selbstmord.
  • Auf jeden Fall den Verkettungsoperator verwenden, wenn Sie (leserlich) alles geben können, die in einer Aussage verknüpft werden muss. (Wenn Sie eine Reihe von Dingen zu verketten, betrachten String.Concat Aufruf explizit -. Oder String.Join, wenn Sie ein Trennzeichen müssen)
  • Sie Literale keine Angst, in mehrere verkettete Bits zu brechen - das Ergebnis wird das gleiche sein. Sie können die Lesbarkeit unterstützen, indem ein langen wörtlichen in mehrere Zeilen umbrochen wird, zum Beispiel, ohne Schaden zu Leistung.
  • Wenn Sie die Zwischenergebnisse der Verkettung für etwas anderes brauchen als die nächste Iteration der Verkettung Fütterung, Stringbuilder ist nicht zu Ihnen helfen. Zum Beispiel, wenn Sie einen vollständigen Namen aus einem Vornamen und einen Nachnamen, aufbauen und dann einen dritte Information (den Spitzname, vielleicht) in dem Ende, werden Sie nur mit String profitieren, wenn Sie nicht tun muß den (Vorname + Nachname) Zeichenfolge für andere Zwecke (wie wir in dem Beispiel zu tun, die eine Person Objekt erstellt).
  • Wenn Sie nur ein paar Verkettungen zu tun haben, und Sie wirklich wollen sie in separaten Erklärungen zu tun, es ist nicht wirklich wichtig, welchen Weg Sie gehen. Welche Art und Weise ist effizienter wird die Größen der Zeichenfolge beteiligt von der Anzahl der Verkettungen abhängen, und in welcher Reihenfolge werden sie verkettet. Wenn Sie wirklich, dass Stück Code glauben, dass ein Performance-Engpass, Profil oder Benchmark es in beiden Richtungen zu sein.

Andere Tipps

Hier ist meine Faustregel:

  

StringBuilder am besten verwendet, wenn die genaue Anzahl der Verkettungen bei der Kompilierung nicht bekannt ist.

Ich persönlich verwende String, wenn ich mehr als nur einen oder zwei Strings zu verketten. Ich bin mir nicht sicher, ob es eine echte Leistung getroffen gewonnen werden, aber ich habe immer gesagt, gelesen und gezeigt, dass mit mehreren Strings eine regelmäßige Verkettung tun schafft eine zusätzliche Kopie der Zeichenfolge jedes Mal, wenn Sie es tun, während mit einem String hält kopieren, bis Sie die letzte ToString() Methode nennen.

Jemand hat experimentell herausgefunden, dass die kritische Zahl 6. Mehr als 6 Verkettungen in einer Reihe und Sie sollten einen Stringbuilder verwenden. Kann mich nicht erinnern, wo ich diese gefunden.

Beachten Sie jedoch, dass, wenn Sie gerade diese Zeilen schreiben in einer Zeile:

"qwert" + "yuiop" + "asdf" + "gh" + "jkl;" + "zxcv" + "bnm" + ",."

Das in einen Funktionsaufruf umgewandelt wird (ich weiß nicht, wie es in VB.net schreiben)

String.Concat("qwert", "yuiop", "asdf", "gh", "jkl;", "zxcv", "bnm", ",.");

Wenn Sie also alle Verkettungen auf einer Linie tun, kümmern Sie sich dann nicht mit String weil String.Concat effektiv in einem Rutsch alle Verkettungen tun wird. Es ist nur, wenn man sich in einer Schleife oder nacheinanderes verketten tun.

Meine Regel -., Wenn Sie in eine Zeichenfolge sind Zugabe in einer für oder foreach-Schleife die Stringbuilder verwenden

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top