Вопрос

Я хочу преобразовать строку, содержащую 5 нулей («00000»), в Int, чтобы ее можно было увеличивать.Всякий раз, когда я конвертирую строку в целое число с помощью Convert.ToInt32(), значение становится 0.Как я могу гарантировать, что целое число останется фиксированной длины после преобразования?

Я хочу иметь возможность увеличивать значение с «00000» до «00001» и т. д., чтобы значение отображалось в базе данных с таким количеством цифр вместо 0 или 1.

Если вы собираетесь проголосовать против вопроса, минимум, что вы можете сделать, это оставить отзыв о том, почему вы это сделали...

Это было полезно?

Решение

Целое число есть целое число.Больше ничего.

Итак int у вас есть нулевое значение, нет возможности добавить какие-либо метаданные «длины» или что-то подобное.

Полагаю, на самом деле вы хотите, чтобы в какой-то момент появился string снова.Ты хочешь это string для представления вашего числа, но с 5 символами и ведущими нулями.

Вы можете добиться этого, используя:

string s = i.ToString("00000")

РЕДАКТИРОВАТЬ

Вы говорите, что хотите, чтобы числа отображались в вашей БД именно так.Спроси себя:

Действительно ли так должно быть в БД или достаточно форматировать числа сразу после их чтения из базы?

В зависимости от этого отформатируйте их (как показано выше) либо при записи, либо при чтении из БД.Конечно, в первом случае потребуется больше места для хранения, и вы не сможете использовать SQL или что-то подобное для выполнения арифметических операций!

Другие советы

Целое число не имеет длины, это чисто численное значение.Если вы хотите сохранить длину, вы должны хранить информацию о длине где-то еще.

Вы можете обернуть значение в объекте, который сохраняет длину в свойстве.Пример:

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));
  }

}
.

Использование:

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

Как говорит Олидис выше, генеракодицетагкод - это просто номер.Он не указывает формат отображения .Я не рекомендую хранить его в магазине с нулями в базе данных.Это генеракодицетагкод, храните его как генеракодицетагкод.

для целей отображения, в приложении, отчет, что угодно, затем подушеруйте нулям.

string s = i.ToString("00000");
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top