В чем разница между Parse () и TryParse ()?
int number = int.Parse(textBoxNumber.Text);
// The Try-Parse Method
int.TryParse(textBoxNumber.Text, out number);
Есть ли какая-то форма проверки ошибок, например, блокировка попыток?
Parse
выдает исключение, если не может проанализировать значение, тогда как TryParse
возвращает, bool
указывающее, удалось ли это сделать.
TryParse
не просто try
/ catch
внутренне - весь смысл в том, что он реализован без исключений, так что это быстро. Фактически, наиболее вероятным способом реализации этого Parse
метода является внутренний вызов метода, TryParse
а затем выдача исключения в случае возврата false
.
Короче говоря, используйте, Parse
если уверены, что значение будет действительным; в противном случае используйте TryParse
.
Если строку нельзя преобразовать в целое число, то
int.Parse()
вызовет исключениеint.TryParse()
вернет false (но не выдаст исключение)источник
Метод TryParse позволяет проверить, можно ли что-то проанализировать. Если вы попробуете Parse, как в первом экземпляре с недопустимым int, вы получите исключение, а в TryParse он вернет логическое значение, сообщающее вам, успешно ли выполнен синтаксический анализ.
В качестве сноски, передача null большинству методов TryParse вызовет исключение.
источник
TryParse и налог на исключение
Parse генерирует исключение, если преобразование строки в указанный тип данных завершается неудачно, тогда как TryParse явно избегает создания исключения.
источник
TryParse не возвращает значение, он возвращает код состояния, чтобы указать, удалось ли выполнить синтаксический анализ (и не генерирует исключение).
источник
Для записи я тестирую два кода: которые просто пытаются преобразовать из строки в число, и если это не удается, присваивают число ноль.
и:
Для С # лучшим вариантом является использование tryparse, потому что альтернатива try & Catch вызвала исключение
Это мучительно медленно и нежелательно, однако код не останавливается, пока исключение Debug не остановлено с ним.
источник
Я знаю, что это очень старый пост, но подумал о том, чтобы поделиться более подробной информацией о Parse vs TryParse.
У меня был сценарий, в котором DateTime нужно преобразовать в String, и если datevalue null или string.empty, мы столкнулись с исключением. Чтобы решить эту проблему, мы заменили Parse на TryParse и получим дату по умолчанию.
Старый код:
Новый код:
Необходимо объявить другую переменную и использовать ее как Out для TryParse.
источник
startDate
и,endDate
какDateTime.TryParse
всегда, перезаписать ихDateTime.MinValue
. Если неправильные представления даты должны быть преобразованы в другое значение, проверьте возвращаемое значениеDateTime.TryParse
и, если оно ложно, установите значение явно.DateTime?
( DateTime nullable )double.Parse ("-"); вызывает исключение, а double.TryParse ("-", разобрано); анализирует до 0, поэтому я предполагаю, что TryParse выполняет более сложные преобразования.
источник
TryParse
возвращаетсяtrue
илиfalse
? Вот как вы узнаете, было ли оно «действительным».