C#-String-Verkettung und String-Internierung
Frage
Wird bei der Zeichenfolgenverkettung einer vorhandenen Zeichenfolge im Intern-Pool eine neue Zeichenfolge in den Intern-Pool eingegeben oder wird ein Verweis auf die vorhandene Zeichenfolge im Intern-Pool zurückgegeben?Werden String.Concat und StringBuilder laut diesem Artikel neue String-Instanzen in den internen Pool einfügen?
http://community.bartdesmet.net/blogs/bart/archive/2006/09/27/4472.aspx
Kann jemand erklären, wie die Verkettung mit dem Praktikantenpool funktioniert?
Lösung
Wenn Sie neue Zeichenfolgen erstellen, werden diese nicht automatisch in den internen Pool aufgenommen, es sei denn, Sie verketten Konstanten zur Kompilierungszeit. In diesem Fall erstellt der Compiler ein Zeichenfolgenergebnis und intern dieses als Teil des JIT-Prozesses.
Andere Tipps
Ob ein String interniert wurde, können Sie per Aufruf erkennen String.IsInterned
.Der Aufruf gibt eine neue Zeichenfolge zurück, die entweder eine Referenz auf eine interne Zeichenfolge ist, die der Zeichenfolge entspricht, die als Argument übergeben wurde, oder null
wenn die Zeichenfolge nicht interniert wurde.