В чем разница между Parse() и TryParse()?
int number = int.Parse(textBoxNumber.Text);
// The Try-Parse Method
int.TryParse(textBoxNumber.Text, out number);
Есть ли какая-то форма проверки ошибок, например, Try-Catch Block?
В чем разница между Parse() и TryParse()?
int number = int.Parse(textBoxNumber.Text);
// The Try-Parse Method
int.TryParse(textBoxNumber.Text, out number);
Есть ли какая-то форма проверки ошибок, например, Try-Catch Block?
Parse
генерирует исключение, если оно не может проанализировать значение, тогда как TryParse
возвращает a bool
, указывающее, удалось ли это сделать.
TryParse
не только try
/catch
внутренне - вся суть в том, что он реализован без исключений, чтобы он был быстрым. Фактически, как это наиболее вероятно реализовано, внутренне метод Parse
вызывает TryParse
, а затем генерирует исключение, если оно возвращает false
.
В двух словах используйте Parse
, если вы уверены, что значение будет действительным; в противном случае используйте TryParse
.
Если строка не может быть преобразована в целое число, то
Метод TryParse позволяет проверить, что-то обрабатывается. Если вы попробуете Parse, как в первом экземпляре с недопустимым int, вы получите исключение в TryParse, оно возвращает логическое значение, позволяющее узнать, удалось ли выполнить синтаксический анализ или нет.
Как сноска, передача null в большинство методов TryParse приведет к исключению.
TryParse и налог на исключение
Параметр генерирует исключение, если преобразование из строки в указанный тип данных не выполняется, тогда как TryParse явно избегает бросать исключение.
TryParse не возвращает значение, он возвращает код состояния, чтобы указать, удалось ли синтаксический анализ (и не генерирует исключение).
Для записи я тестирую два кода: просто попробуйте преобразовать из строки в число, и если она не удалась, присвойте номер нулю.
if (!Int32.TryParse(txt,out tmpint)) {
tmpint = 0;
}
и
try {
tmpint = Convert.ToInt32(txt);
} catch (Exception) {
tmpint = 0;
}
Для С# лучшим вариантом является использование tryparse, потому что try & Catch альтернатива выбрала исключение
A first chance exception of type 'System.FormatException' occurred in mscorlib.dll
То, что это болезненно медленное и нежелательное, однако, код не останавливается, если исключение Debug не разрешено для остановки с ним.
Я знаю его очень старый пост, но подумал об обмене несколькими подробностями о Parse vs TryParse.
У меня был сценарий, в котором DateTime необходимо преобразовать в String, и если datevalue null или string.empty, мы столкнулись с исключением. Чтобы преодолеть это, мы заменили Parse на TryParse и получим дату по умолчанию.
Старый код:
dTest[i].StartDate = DateTime.Parse(StartDate).ToString("MM/dd/yyyy");
dTest[i].EndDate = DateTime.Parse(EndDate).ToString("MM/dd/yyyy");
Новый код:
DateTime startDate = default(DateTime);
DateTime endDate=default(DateTime);
DateTime.TryParse(dPolicyPaidHistories[i].StartDate, out startDate);
DateTime.TryParse(dPolicyPaidHistories[i].EndDate, out endDate);
Обязательно объявить другую переменную и использовать ее как Out for TryParse.
double.Parse( "-" ); вызывает исключение, тогда как double.TryParse( "-", без разбора); анализирует до 0 поэтому я думаю, что TryParse выполняет более сложные преобразования.