280 votes

Quelle est la longueur maximale possible d’une chaîne .NET ?

Ce qui est la plus longue chaîne pouvant être créés dans .NET ? Les docs de la `` classe sont muets sur cette question autant que je peux voir, donc une réponse faisant autorité peut nécessiter quelques connaissances des parties internes. Serait la variation maximale sur un système 64 bits ?

[Ceci est demandé plus par curiosité que pour une utilisation pratique - je ne souhaitent pas créer n’importe quel code qui utilise des chaînes gigantesques !]

403voto

HitScan Points 4761

La limite théorique peut être 2 147 483 647, mais la limite pratique est nulle part près de ce. Depuis pas un seul objet dans une .Net programme peut être de plus de 2 go et le type de chaîne utilise unicode (2 octets pour chaque caractère), le mieux que vous pourriez faire est de 1,073,741,823, mais vous êtes susceptible de ne jamais être en mesure de passer sur une machine 32 bits.

C'est l'une de ces situations où "Si vous devez vous demander, vous êtes probablement fait quelque chose de mal."

78voto

bdukes Points 54833

Basé sur mon expérience hautement scientifique et précis, il dessus sur ma machine bien avant 1 000 000 000 caractères (je suis encore sous le code pour obtenir une meilleure pinpoint ci-dessous). Mise à jour : Après quelques heures, j’ai renoncé. Résultats définitifs : peut aller beaucoup plus grand que 100 000 000 caractères, instantanément donné System.OutOfMemoryException à 1 000 000 000 caractères.

52voto

Ryan Farley Points 7916

Étant donné que la propriété Length de System.String est un Int32, je suppose que que la longueur maximale serait de 2 147 483 647 caractères (taille max de Int32). Si elle acceptait plus longtemps vous ne pouvait pas vérifier la longueur puisque qui échouerait.

2voto

VVS Points 11528

String.Length étant un nombre entier (qui est un alias pour Int32) sa taille est limitée aux caractères unicode Int32.MaxValue  ;)

0voto

loudej Points 1590

200 Mo... à quel point votre app broie à un arrêt virtuel, a environ un concert travail de mémoire et l’o/s compte commence à agir comme vous aurez besoin de redémarrer.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X