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



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



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

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


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

1178   8  

8 ответов:

Parse выдает исключение, если оно не может разобрать значение, тогда как TryParse возвращает a 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

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

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

у меня был сценарий, где DateTime должен быть преобразован в строку и если 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);

нужно объявить другую переменную и использовать ее как выход для TryParse.

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

Comments

    Ничего не найдено.