Сохраняет ли текстовое поле весь числовой текст в виде строки или строки? - PullRequest
3 голосов
/ 24 мая 2011

У меня есть краткое обсуждение с моим товарищем по команде по этому поводу.Он говорит, что если я введу число в текстовое поле и попытаюсь использовать значение позже, используя textbox.text или val (textbox.text), мне не нужно будет анализировать значение как целое.По его словам, если значением атрибута text является все число, вы можете напрямую получить значение в виде целого числа, а не строки.

Итак, если у меня есть textBox1.Text = "12345", то в следующий раз, если я использую, intABC = textBox1.Text, он не выдаст ошибку.Это правильно?Использует ли C # или другой язык .Net это неявное преобразование?Кроме того, будет ли код хранить "12345" в виде строки или целого числа?И сколько памяти займет это значение: 5 байт для 5 символов или 2 байт для целого числа?

Ответы [ 4 ]

14 голосов
/ 24 мая 2011

TextBox.Text сохраняет текст в виде простой строки, его не волнует реальное "значение" строки.

Затем, если вы хотите вернуть свой номер, вам нужно проанализироватьстрока, следовательно, ни явное, ни явное приведение к int не допускается (или, что лучше, она выдаст исключение, если вы это сделаете ...).

Что касается размера, этот текст сохраняется как UNICODE (UTF-16) строка, следовательно, от 2 до 4 байтов на символ (в зависимости от символа).

Вы можете легко измерить размер (только размер строки, без накладных расходов из-за размера ссылки и т. Д.), Используя следующий код:

int numBytes = Encoding.Unicode.GetByteCount(stringToMeasure);

Чтобы найти больше информации о строках, Unicode и кодировки имеют вид здесь , здесь или здесь .

6 голосов
/ 24 мая 2011

ваш друг не прав, это сделает компилятор несчастным, компилятор даже не преобразует его автоматически для вас.Текстовое свойство TextBox имеет тип string.проверить это

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.textbox.text.aspx

2 голосов
/ 24 мая 2011

Что касается вашего вопроса о других языках; Если опция Option Strong не включена, VB.NET разрешит это. Это также разрешит это назначение, если ввод не будет полностью числовым, что приведет к исключению времени выполнения.

2 голосов
/ 24 мая 2011

Если вы знаете, что будете использовать только числовые значения, попробуйте использовать элемент управления NumericUpDown .
Затем вы можете получить / установить числовое значение (десятичное) с помощью свойства Value.

Элемент управления

A NumericUpDown содержит одно числовое значение, которое можно увеличивать или уменьшать, нажимая кнопки управления вверх или вниз. Пользователь также может ввести значение, если для свойства ReadOnly не установлено значение true.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...