¿Cuál es la diferencia entre StringBuilder y Span<string> en C# ?
¿Se usa el mismo código en StringBuilder que en Span<string> ?
Si es así, ¿cuál es la diferencia entre ellos, y si no, cuál es mejor ?
StringBuilder crece a cualquier tamaño a medida que inserta caracteres, mientras que Span<> solo apunta a un búfer fijo preasignado. Nunca crecerá.
Las otras dos preguntas no tienen sentido.
Editar: señalaré que hay un ValueStringBuilder interno que funciona en un lapso (y, por lo tanto, tiene un tamaño máximo fijo), pero es mucho más eficiente dentro de sus limitaciones.
Estos son diferentes. Cada string es una array de caracteres. En la definición de una string normal, se define una array y, si desea realizar otros cambios, se define otra array y, como resultado, se asigna otra memoria , pero StringBuilder llega y crea una matriz final. Esta explicación fue muy simple y concisa y sin detalles, la cual está completa aquí
En el código fuente de StringBuilder , también puede ver que usa los mismos tipos comunes y no funciona en la estructura.
Span es una ref struct que es de un tipo completamente diferente y es por eso que no se usa en todas partes.
Por supuesto, Span no solo se usa para string . Se puede hacer para cualquier otro tipo inmutable . IMF