Hoy noté que la clase String de C# devuelve la longitud de una cadena como Int. Dado que un Int es siempre de 32 bits, sin importar la arquitectura, ¿significa que una cadena solo puede tener 2 GB o menos de longitud?¿Las cadenas de C# (y otras API de .NET) están limitadas a 2 GB de tamaño?
Una secuencia de 2 GB sería muy inusual, y presenta muchos problemas junto con ella. Sin embargo, la mayoría de las API .NET parecen usar 'int' para transmitir valores como la longitud y el recuento. ¿Esto significa que siempre estamos limitados a tamaños de colección que caben en 32 bits?
Parece un problema fundamental con las API de .NET. Hubiera esperado que cosas como el recuento y la longitud se devolvieran a través del equivalente de 'size_t'.
Si mi respuesta fue una cadena de 2 GB, podría echar otro vistazo al problema. –
Es una broma, ¿verdad? – arthurprs
Nitpick: dado que .NET codifica caracteres con UTF-16, asignando (al menos) dos bytes para cada carácter, una cadena de longitud máxima tendría 2^31 caracteres y consumiría al menos ** 4 GB ** o memoria, no * * 2GB **. –