Concatenación de cadenas C# e internación de cadenas
Pregunta
Al realizar la concatenación de cadenas de una cadena existente en el grupo de internos, ¿se ingresa una nueva cadena en el grupo de internos o se devuelve una referencia a la cadena existente en el grupo de internos?Según este artículo, ¿String.Concat y StringBuilder insertarán nuevas instancias de cadena en el grupo interno?
http://community.bartdesmet.net/blogs/bart/archive/2006/09/27/4472.aspx
¿Alguien puede explicar cómo funciona la concatenación con el grupo de internos?
Solución
Si crea nuevas cadenas, no se colocarán automáticamente en el grupo interno, a menos que concatene constantes en tiempo de compilación, en cuyo caso el compilador creará un resultado de cadena y lo internará como parte del proceso JIT.
Otros consejos
Puedes ver si una cadena ha sido internada llamando String.IsInterned
.La llamada devolverá una nueva cadena que es una referencia a una cadena interna igual a la cadena que se pasó como argumento, o null
si la cuerda no estaba internada.