Me pregunto si este código ...¿Un StringBuilder inicializado con una cadena contiene exactamente (solo) espacio suficiente para esa cadena?
StringBuilder sb = new StringBuilder("Please read the following messages.");
... inicializa sb
con un tampón exactamente tan grande como la cadena que se pasa al constructor. Por un lado, esto parecería lo más lógico. Por otro lado, parece una especie de fracaso el objetivo de la clase StringBuilder
para uno de sus usos más comunes, que es proporcionar mutabilidad para hacer que los anexos repetidos sean más eficientes. (La primera llamada a Append
, si la respuesta a mi pregunta es "sí", requeriría sb
para cambiar el tamaño en sí.)
Por otra parte, supongo que se podría ver esto como análogo al constructor para List<T>
que toma una IEnumerable<T>
como parámetro. Tal vez la suposición en este caso es que no está planeando agregar a, sino más bien en manipulando lo que ya está allí.
La única verdadera investigación que he hecho en esta era comprobar la MSDN documentation on StringBuilder, que no proporcionó una respuesta (se dice que el constructor inicializa la instancia "por medio de la cadena especificada," pero no indica cómo la cuerda se usa).
EDITAR: Por lo que es, no parece extraño para nadie más "aplicación específica" ... esto? Quiero decir, el propósito de la clase StringBuilder
es ofrecer una alternativa para realizar muchas operaciones en un string
, creando una tonelada de instancias inmutables string
en el camino; por lo tanto, es para eficiencia. Siento que se debe especificar el comportamiento de este constructor, de modo que el desarrollador pueda tomar una decisión informada sobre cómo usarlo independientemente de la plataforma.
Es decir, es implementado por Microsoft de cierta manera; podrían haberlo puesto fácilmente en la documentación (obligando a otras implementaciones a seguir su ejemplo). Solo una fuente personal de perplejidad ...
Buena decisión - I j Ust comprobé esto yo mismo y llegué a la misma conclusión (al verificar la propiedad 'Capacidad' después de la inicialización ... de alguna manera esto no se me ocurrió hasta después de haber publicado la pregunta). –
... y aún así no deberías confiar en esto. Si le importa lo suficiente acerca de la capacidad requerida para publicar una pregunta sobre el desbordamiento de pila, debe usar una de las sobrecargas donde puede especificarla. El propósito completo de "implementación específica" significa que puede cambiar en el futuro. No confíes en el comportamiento indocumentado. –
@Lasse - Oh, de acuerdo. No recomendaría * confiar * en este detalle. (Y luchando por pensar cómo podrías confiar en este hecho) –