Ich weiß, .NET (und daher VB.NET) Strings sind unveränderlich. Ich verwende jedoch VBA 7.0 in Excel 2010. Sind Zeichenketten dort unveränderlich? Ich mache eine Menge String-Verarbeitung und für kleine Mengen ist einige (direkte) String-Manipulation in Ordnung, aber ich bin besorgt, dass es nicht skalieren wird - da jedes zusätzliche Zeichen von einer Zeichenkette zu einer anderen verschoben werden kann die Saite.Sind VBA-Strings unveränderlich?
Antwort
VBA-Strings sind unveränderbar.
Genau wie bei VB.NET gibt es keine Möglichkeit, "einen Teil von" zu ersetzen oder an eine Zeichenfolge anzufügen, ohne eine neue Zeichenfolge zu erstellen. Ob das wichtig ist - moderne Computer sind verdammt schnell - hängt vom tatsächlichen Algorithmus, den Daten und der Umgebung ab.
Im Gegensatz zu .NET-Dokumentation ist es schwierig, eine solche Verhaltensreferenz für VBA ausfindig zu machen. Von MS-VBAL: 2.1 Data Values and Value Types finden wir dieses seltene kleine Juwel
Individuelle Datenwerte sind unveränderbar. Dies bedeutet, dass in einer VBA-Umgebung keine definierten Mechanismen verfügbar sind, die dazu führen können, dass ein Datenwert in einen anderen Datenwert geändert wird.
wobei Strings "individuelle Datenwerte" darstellen.
Sie sind unveränderlich, außer wenn sie veränderliches Verhalten zeigen, dann sind sie nicht.
Zum Beispiel ist die Zuweisung über mid$()
wesentlich schneller als eine normale Neu-String-aus-Zuweisung.
Dim s As String
s = "ABC"
Debug.Print s, StrPtr(s)
'// -> ABC 122899836
Mid$(s, 1, 1) = "Z"
Debug.Print s, StrPtr(s)
'// -> ZBC 122899836
s = "??" & Right$(s, 1)
Debug.Print s, StrPtr(s)
'// -> ??C 196635748
- 1. Sind Java-Primitive unveränderlich?
- 2. Sind Perl-Strings unveränderlich?
- 3. Scala unveränderlich SortedSet sind nicht "stabil" beim Löschen
- 4. C# unveränderlich int
- 5. Array unveränderlich machen
- 6. Aktualisiere Reagestatus mit Unveränderlich
- 7. Ist BigInteger unveränderlich oder nicht?
- 8. Unterschied zwischen unveränderlich und endgültig
- 9. Psr7 Http Message, warum unveränderlich?
- 10. Ist die statische Initialisierung unmodifizierbarCollection.get garantiert unveränderlich?
- 11. Erstellen Sie reagieren unveränderlich JS verschachtelten Zustand
- 12. Warum ist es möglich, Var neu zu definieren (da FP-Werte unveränderlich sind)?
- 13. Da Tupel unveränderlich sind, warum macht das Schneiden sie eine Kopie statt einer Ansicht?
- 14. Wie kann ich veränderbare Strings beschreiben, wenn Strings standardmäßig unveränderlich sind?
- 15. Warum sind Iteratoren in forEach für eine Struktur unveränderlich, aber für eine Klasse veränderbar?
- 16. Sind die Variablen vom Typ RAW im PL/SQL-Code unveränderlich?
- 17. In Java sind Strings unveränderlich, also was genau passiert, wenn dies geschieht?
- 18. Was sind die Unterschiede Vorbedingung, Nachbedingung und unveränderlich in der Computerterminologie
- 19. Swift optionale Array-Eigenschaft ist unveränderlich?
- 20. NSString unveränderlich erlaubt, seine Werte zu ändern?
- 21. Wie kann Java-String unveränderlich Sicherheit erhöhen?
- 22. Guave des ImmutableList ist nicht wirklich unveränderlich
- 23. Wird System.Numerics.BigInteger unveränderlich sein? Sollte es sein?
- 24. Kann nicht unveränderlich ausgeliehenen Inhalt als veränderbar
- 25. In Scala, Liste ist unveränderlich aber
- 26. Swift veränderbares Wörterbuch wird als unveränderlich behandelt
- 27. Javascript Globals Variablen unveränderlich in onsubmit Ereignishandler
- 28. Ist es richtig, java.lang.String unveränderlich aufzurufen?
- 29. Behalten Sie das Formular zentriert, aber unveränderlich
- 30. Wie mache ich eine Struktur unveränderlich?
+1 Ich wollte nur sagen: Dim str As String: str = "dieser String": Debug.Print VarPtr (str), StrPtr (str): Mittel (str, 3, 2) = "at ": Debug.Print VarPtr (str), StrPtr (str)' –
In diesem Fall sollte dies die Antwort sein, nicht meins. – user2864740