Разбираем В. метод tryparse

в чем разница между Parse() и TryParse()?

int number = int.Parse(textBoxNumber.Text);

// The Try-Parse Method
int.TryParse(textBoxNumber.Text, out number);

есть ли какая-то форма проверки ошибок, как блок Try-Catch?

8 ответов


Parse выдает исключение, если оно не может проанализировать значение, тогда как TryParse возвращает bool указывает, удалось ли это.

TryParse не только try/catch внутренне-весь смысл в том, что он реализован без исключений, чтобы он был быстрым. На самом деле способ, которым он, скорее всего, реализован, заключается в том, что внутренне Parse метод будем называть TryParse а затем выбросить исключение, если он возвращает false.

в двух словах, использовать Parse Если вы уверены, что значение будет действительным; в противном случае используйте TryParse.


Если строка не может быть преобразована в целое число, то

  • int.Parse () выдаст исключение
  • int.TryParse () вернет false (но не выдаст исключение)

метод TryParse позволяет проверить, является ли что-то разбираемым. Если вы попытаетесь проанализировать, как в первом случае с недопустимым int, вы получите исключение в то время как в TryParse он возвращает логическое значение, сообщающее вам, удалось ли выполнить синтаксический анализ или нет.

в качестве сноски передача null большинству методов TryParse вызовет исключение.


TryParse и налог исключения

Parse создает исключение, если преобразование из строки в указанный тип данных завершается неудачно, тогда как TryParse явно избегает создания исключения.


TryParse не возвращает значение, он возвращает код состояния, чтобы указать, удалось ли выполнить синтаксический анализ (и не создает исключение).


для записи я тестирую два кода: которые просто пытаются преобразовать из строки в число, и если это не удастся, то назначьте число нулю.

        if (!Int32.TryParse(txt,out tmpint)) {
            tmpint = 0;
        }

и:

        try {
            tmpint = Convert.ToInt32(txt);
        } catch (Exception) {
            tmpint = 0;
        }

для c# лучший вариант-использовать tryparse, потому что try & Catch alternative бросил исключение

A first chance exception of type 'System.FormatException' occurred in mscorlib.dll

что это болезненно медленно и нежелательно, однако код не останавливается, если исключение Debug не установлено для остановки с ним.


Я знаю, что это очень старый пост, но думал поделиться несколькими подробностями о разборе против TryParse.

у меня был сценарий, где DateTime необходимо преобразовать в String и если datevalue null или string.пустые мы столкнулись с исключением. Чтобы преодолеть это, мы заменили 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 для TryParse.


двойной.Parse ( " - " ); вызывает исключение, в то время как двойной.TryParse (" - " , out parsed); анализирует до 0 поэтому я думаю, что TryParse делает более сложные преобразования.