Рейтинг:
20
OriginalGriff
Почему люди настаивают на этом?
Никогда не используйте функцию Convert для изменения типа ввода: использовать метод tryparse. Таким образом, когда пользователь совершает ошибку - а они делают это постоянно - вы можете обнаружить ее до того, как она станет проблемой, и сказать им точно, что они должны сделать, чтобы исправить ее:
int a;
if (!int.TryParse(TextBoxTUNA.Text, out a))
{
// Report problem to user
return;
}
Computer Wiz99
OriginalGriff, так что у меня есть это: int a = Convert.ToInt32(TextBoxTUNA.Text); и я изменил его на этот:
int b = преобразовать.ToInt64(long)(TextBoxTL.Text);. Я получаю и ошибку между (long)(TextBoxTL.Text). Как я могу это исправить?
Andreas Gieriet
Вы поняли, что OriginalGriff объяснил, чтобы сделать? Он сказал [...] ***Никогда не используйте Convert [...]. Вы, кажется, не знаете о предложенной помощи...
Энди
Computer Wiz99
Я не понимаю, как использовать этот метод. Я не пытаюсь ничего хранить. Просто имейте его там, где, если пользователь вводит число типа 2181003000 в текстовое поле и 899763000 в другое текстовое поле, чтобы вычесть их вместе, чтобы получить ответ, что ошибка не будет срабатывать. Я действительно провел некоторое исследование того, что он мне показал, но все еще не понял, что это такое.
Andreas Gieriet
Вы искали "C# tryparse" в google?
Подумайте о задаче: что делать, если пользователь вводит дерьмо? Ты должен справиться с этим. В вашем случае числа слишком велики, чтобы поместиться в 32-битное целое число (это то, что int32 или int). Результатом является исключение (ошибка, которая говорит о том, что система не может восстановиться после плохой записи, так как вы не предоставили средства для обработки ошибок, подобных приведенным выше, изящно.
Итак, возьмем более крупный целочисленный тип, например int64 (это C# long
type) и используйте TryParse, как было предложено выше. TryParse возвращает true, если было введено "никакого дерьма" и если значение укладывается в 64 бита. В противном случае он возвращает false. Чтобы разрешить преобразование TryParse для хранения значения в переменную, переменная должна быть передана в качестве параметра out этой функции. В вашем случае это должно быть так long
и *нет* int
.
Посмотрите на методы в google. Если это слишком высокий уровень, то я сомневаюсь, что вы вообще можете создать значимую функцию. Извини, что так прямолинейно.
Энди
PS: глядя на вашу историю вопросов, я предлагаю вам поработать с базовым учебником по C#. В интернете их очень много. Удачи вам!
Computer Wiz99
Хорошо. Это имеет больше смысла. Позвольте мне спросить вас вот о чем. Когда я вставляю код позади, например: int b = Convert.ToInt64(long)(TextBoxTL.Text);. Я не буду кодировать его таким образом, но пусть TryParse сделает это для меня вместо этого или TryParse просто проверяет, введено ли дерьмо, и обрабатывает это дерьмо для меня, чтобы пользователь знал, что они ввели дерьмо?
Andreas Gieriet
long.TryParse(...)
является ли функция C# для *синтаксического анализа* (поиска в интернете, что означает синтаксический анализ) заданного текста и преобразования его в long
ценность. В случае успеха он возвращается true
и вкладывает свою ценность в out
параметр. Если это не удалось по какой-либо причине, он возвращается false
Нет никакой магии, чтобы уведомить любого пользователя. Функция ничего не знает о том, в каком контексте она используется. Все, что вы передаете, - это текст и параметр, который нужно заполнить соответствующим значением. *Вы* должны проверить возвращаемое значение (true
/false
) чтобы решить, что сказать пользователю. Здесь нет никакой магии.
Я думаю, что этой информации достаточно.
И пожалуйста: поработайте с базовым учебником по C#. Похоже, вам не хватает самых элементарных вещей. Не виню вас, но чтобы дать "быстрые ответы" (это форум быстрых ответов), мы должны предполагать базовый уровень unterstanding и возможность читать документацию разработчиков, скажем, из MSDN.
Энди
Computer Wiz99
Ладно, круто. Позвольте мне исследовать еще немного и вернуться, чтобы перенаправить свой вопрос.
Andreas Gieriet
Для меня преобразование завершено. Если вы пройдете через базовый учебник по C#, вы увидите, что "качество и уровень вопроса" выше и более плодотворны для всех участников.
Энди
Andreas Gieriet
Мои 5!
Энди
Рейтинг:
2
Shameel
Один int
может хранить значения от -2^32-1 до 2^32. Для хранения чего-либо большего используйте long
тип данных, который может хранить от -2^64-1 до 2^64.
Computer Wiz99
Шамиль, Итак, у меня есть вот что: int a = Convert.ToInt32(TextBoxTUNA.Text); и я изменил его на этот:
int b = преобразовать.ToInt64(long)(TextBoxTL.Text);. Я получаю и ошибку между (long)(TextBoxTL.Text). Как я могу это исправить?
Andreas Gieriet
Здесь вы, кажется, опять не понимаете, что означают диапазоны чисел и типы. Знаете ли вы, что такое значение (2^32)-1? Сравните его с вашим ожидаемым диапазоном значений!
Энди
Рейтинг:
1
Bhushan Mehetre
int a = Convert.ToInt32(TextBoxTUNA.Text);
Проблема в приведенном выше коде с TextBoxTUNA.Текстовое значение является 2181003000
Вы не можете хранить большое нет в малом.
-2,147,483,648 .. 2,147,483,647-это диапазон типа данных int; так как же вы можете хранить 2181003000 в int!!
Это как попытаться положить 1,5 литра в 1 литровую банку.
Вы можете сделать что-то вроде
Int32 a = Convert.ToInt32(TextBoxTUNA.Text);