Bonjour
Pour réaliser une structure, j’ai besoin de déclarer des « string » de longueur définie.
Je ne l’ai pas trouvé dans l’aide sur les structures.
Quelqu’un peut-il me dire comment les déclarer ?
Merci de votre aide
Claude Azoulai
Bonjour
Pour réaliser une structure, j’ai besoin de déclarer des « string » de longueur définie.
Je ne l’ai pas trouvé dans l’aide sur les structures.
Quelqu’un peut-il me dire comment les déclarer ?
Merci de votre aide
Claude Azoulai
Le concept de taille de string a disparu dans .NET.
Il faut passer par un StringBuilder pour retrouver ce comportement :
Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 var sb = new StringBuilder(10); sb.Append("0123456789");
Si on rajoute des données après le 9 (donc si le string dépasse la longeur), je vais déclencher une exception.
Il existe cependant une subtilité, qui consiste à utiliser l'attribut VBFixedStringAttribute, mais cela oblige à rajouter une référence à Microsoft.VisualBasic.
Enfin, il est possible de passer par une propriété de type String, qui vérifie la longeur du string dans le setter. Si c'est trop long, on peut ensuite à loisir, tronquer ou lancer une exception.
Less Is More
Pensez à utiliser les boutons
,
et les balises code
Desole pour l'absence d'accents, clavier US oblige
Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.
Hello,
Hein ? Les string ont une taille. Que veux-tu dire ?
Non. Le constructeur de StringBuilder qui prend un int en paramètre ne fait que spécifier la taille initiale du buffer, pas la taille maximale (cf la doc)
Claude: quel est ton besoin ? Veux tu faire de la validation, pour t'assurer que tel propriété de tel object est une string d'une taille donnée ? Ou veux tu exporter ces string quelque part, dans un fichier ? Ou autre chose ?
Ce que je veux dire c'est que les string ne peuvent pas avoir de taille prédéfinie. Un string est un string, qu'il fasse 1 ou 200 caractères. Tu ne peux pas dire "je veux que mon string ait une longueur X". Si tu mets X+1 caractères, le string va se redimensionner tout seul...
Je n'ai pas parlé de taille maximaleAvec un StringBuilder si tu dis que la taille c'est 9 alors tu auras une exception qui sera levée (ArgumentOutOfRangeException), ce qui te laisse toute latitude pour pouvoir agir en fonction de tes besoins en catchant l'exception (soit refuser les caractères supplémentaires, soit les ajouter par exemple).
Le StringBuilder n'est qu'une solution parmi tant d'autre. En tout cas je persiste, on ne peut pas initialiser un string à taille fixe en .NET. Ou alors je suis curieux de savoir comment![]()
Less Is More
Pensez à utiliser les boutons
,
et les balises code
Desole pour l'absence d'accents, clavier US oblige
Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.
Les string ne se redimensionnent pas, ils sont immutables. Soyons précis
CertesLà où je suis pas d'accord, ce'st que ce n'est pas avec ce constructeur là que l'on spécifie une taille max, c'est avec celui-ci.
Less Is More
Pensez à utiliser les boutons
,
et les balises code
Desole pour l'absence d'accents, clavier US oblige
Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.
Partager