Question

Je souhaite convertir une chaîne contenant 5 zéros ("00000") en Int afin qu'elle puisse être incrémentée.Chaque fois que je convertis la chaîne en entier à l'aide de Convert.ToInt32(), la valeur devient 0.Comment puis-je m'assurer que l'entier reste à une longueur fixe une fois converti ?

Je veux pouvoir incrémenter la valeur de "00000" à "00001" et ainsi de suite pour que la valeur apparaisse avec autant de chiffres dans une base de données au lieu de 0 ou 1.

Si vous souhaitez voter contre une question, le moins que vous puissiez faire est de laisser des commentaires sur les raisons pour lesquelles vous l'avez fait...

Était-ce utile?

La solution

Un entier est un entier.Rien de plus.

Alors le int vous avez une valeur zéro, il n'y a aucun moyen d'ajouter des métadonnées de "longueur" ou similaires.

Je suppose que ce que vous voulez réellement, c'est qu'à un moment donné, il y ait un string encore.Vous voulez que string pour représenter votre numéro, mais avec 5 caractères et des zéros non significatifs.

Vous pouvez y parvenir en utilisant :

string s = i.ToString("00000")

MODIFIER

Vous dites que vous souhaitez que les numéros apparaissent ainsi dans votre base de données.Demande toi:

Est-ce que cela doit vraiment être comme ça dans la base de données ou est-il suffisant de formater les nombres dès que vous les lisez dans la base de données ?

En fonction de cela, formatez-les (comme indiqué ci-dessus), soit lors de l'écriture ou de la lecture dans la base de données.Bien entendu, le premier cas nécessitera plus d’espace de stockage et vous ne pourrez pas vraiment utiliser SQL ou similaire pour effectuer des opérations arithmétiques !

Autres conseils

Un entier n'a pas de longueur, c'est purement une valeur numérique.Si vous voulez garder la longueur, vous devez stocker les informations sur la longueur ailleurs.

Vous pouvez envelopper la valeur dans un objet qui maintient la longueur dans une propriété.Exemple:

public class FormattedInt {

  private int _value, _length;

  public FormattedInt(string source) {
    _length = source.Length;
    _value = Int32.Parse(source);
  }

  public void Increase() {
    _value++;
  }

  public override string ToString() {
    return _value.ToString(new String('0', _length));
  }

}

Utilisation:

FormattedInt i = new FormattedInt("0004");
i.Increase();
string s = i.ToString(); // 0005

Comme le dit Olydis ci-dessus, un int n'est qu'un nombre.Il ne précise pas le format d'affichage.Je ne recommande pas non plus de le stocker avec des zéros dans une base de données.C'est un int, stockez-le comme int.

À des fins d'affichage, dans l'application, un rapport, peu importe, remplissez ensuite les zéros.

string s = i.ToString("00000");
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top