C #: Tryparse против преобразования - PullRequest
2 голосов
/ 21 августа 2009

Сегодня я прочитал статью, в которой написано, что мы всегда должны использовать TryParse (string, out MMM) для преобразования, а не Convert.ToMMM ().

Я согласен со статьей, но после этого я застрял в одном сценарии?

Когда для строки всегда будет какое-то допустимое значение и, следовательно, мы также можем использовать Convert.ToMMM (), потому что мы не получаем никаких исключений от Covert.ToMMM ().

Что я хотел бы знать здесь: есть ли какое-либо влияние на производительность, когда мы используем TryParse, потому что, когда я знаю, что параметр out всегда будет действительным, мы можем использовать Convert.ToMMM (), а не TryParse (string, out МММ)

Что ты думаешь?

Ответы [ 3 ]

9 голосов
/ 21 августа 2009

Если вы знаете, значение может быть скрыто, просто используйте Parse(). Если вы «знаете», что оно может быть преобразовано, а оно не может, тогда будет сгенерировано исключение.

РЕДАКТИРОВАТЬ: Обратите внимание, это по сравнению с использованием TryParse или Convert без проверки ошибок. При использовании любой из других методов с * проверки 1011 * собственно ошибки, то точка является спорной. Я просто обеспокоен вашим предположением, что вы знаете значение, которое можно преобразовать. Если вы хотите пропустить проверку ошибок, используйте Parse и умрите немедленно при сбое, а не продолжайте и не портите данные.

1 голос
/ 21 августа 2009

Когда ввод в TryParse / Convert.ToXXX происходит из пользовательского ввода, я всегда буду использовать TryParse. В случае значений базы данных я бы проверил, почему вы получаете string s из базы данных (может быть, плохой дизайн?). Если строковые значения можно ввести в столбцы базы данных, я бы также использовал TryParse, так как вы никогда не можете быть уверены, что никто не изменяет данные вручную.

EDIT
Чтение ответа Мэтью: Если вы не уверены и все равно хотите обернуть преобразование в блок try-catch, вы можете рассмотреть возможность использования TryParse, так как в этом случае говорят, что это намного быстрее, чем выполнение try-catch.

0 голосов
/ 01 августа 2017

Существует значительная разница в подходе к разработке, который вы используете.

Преобразование : преобразование одной «примитивной» данных в другой тип и соответствующий формат с использованием нескольких параметров
Регистр и точка - преобразование целого числа в бит по битам представление . Или шестнадцатеричное число (в виде строки) в целое число и т. Д.
Сообщения об ошибках : Сообщение об ошибке, относящейся к преобразованию, - для проблем в нескольких случаях и на нескольких этапах процесса преобразования.

TryParse: Безошибочная передача из одного формата данных в другой. Включение управления T / F возможно или нет.
Сообщения об ошибках: НЕТ
NB: Даже после передачи данных в переменную - переданные данные по умолчанию того типа, в который мы пытаемся выполнить синтаксический анализ.

Parse : по сути, некоторые данные в одном формате переносятся в другой. Нет представлений и ничего фантастического.
Сообщения об ошибках: Форматно-ориентированные

P.S. Поправь меня, если я что-то пропустил или недостаточно хорошо объяснил.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...