я должен использовать класс Convert? - PullRequest
3 голосов
/ 02 марта 2010

Например, в следующем сценарии

Convert.Int64(string somstring)

или

long.Parse(string somstring);

похоже, делает ту же самую работу. Какой из них лучше?

Спасибо

Ответы [ 4 ]

4 голосов
/ 02 марта 2010

Если вы посмотрите на источник, Convert.ToInt64(string) просто вызывает long.Parse, но проверяет, что строка не null первая.

Я бы рекомендовал вызовы long.Parse, потому что это делает намерение (разбор строк) более понятным.

Я рекомендую использовать класс Convert, если тип, который вы конвертируете из , может измениться. (Или если вы конвертируете из object)

2 голосов
/ 02 марта 2010

Просто для полноты других ответов не забудьте о long.TryParse , который обычно безопаснее, если вы не уверены в формате входной строки.

1 голос
/ 02 марта 2010

Convert.Int64 вызывает long.Parse внутри, просто делает нулевую проверку раньше. Вот мужество:

if (value == null)
{
    return 0L;
}
return long.Parse(value, CultureInfo.CurrentCulture);

Если вам нужна нулевая проверка, Convert.Int64 безопаснее, вот и все, в противном случае без разницы.

0 голосов
/ 02 марта 2010

Convert.Int64 на самом деле вызывает long.Parse с CultureInfo.CurrentCulture после первой проверки нулевой строки Так что, пока вы знаете, что строка не будет нулевой, вы можете сохранить шаг и вызвать long.Parse

...