En primer lugar, tenga en cuenta que las cadenas en .NET son muy diferentes a las cadenas almacenadas en lenguajes no administrados (como C++) ... En el CLR, la longitud de la cadena (en caracteres y en bytes) se almacena en memoria para que el CLR sepa cuán grande es el bloque de memoria (matriz de caracteres) que contiene la cadena. Esto se hace al crear la cadena y no se cambia dado que el tipo System.String
es inmutable.
En C++ esto es bastante diferente, ya que la longitud de una cadena se descubre al leer hasta el primer carácter nulo. Debido a la forma en que funciona el uso de la memoria en el CLR, esencialmente puede considerar que obtener la propiedad Length
de una cadena es como recuperar una variable int
. El costo de rendimiento aquí será absolutamente mínimo, si eso es lo que está considerando.
Si desea obtener más información sobre las cadenas en .NET, intente con Jon Skeet's article sobre el tema; parece que tiene todos los detalles que tal vez quiera saber sobre las cadenas en .NET.
No es realmente "precalculada" tanto como la propiedad Longitud para la clase de cadena inmutable simplemente devuelve la propiedad Longitud para la estructura de datos subyacente. –
En realidad, hay un número almacenado allí (en la estructura de datos subyacente) que representa la longitud de la cadena, y el número existe como resultado de algún cálculo. Ya sea que use o no la propiedad Length, ese número siempre se calcula y siempre se almacena en la estructura de datos subyacente. Eso es lo que quiero decir con "precalculado". – tylerl