2017-02-15 9 views
-2

У меня есть код, в котором многие строки анализируются на целые значения.Nullcheck before int.TryParse

string item = null; //or a value 
int result; 
if (!string.IsNullOrEmpty(item) && int.TryParse(item, out result)) 
{ 
    //do stuff 
} 

Нужно ли каждый раз проверять IsNullOrEmpty? Если это null или пустой, синтаксический разбор должен завершиться неудачей.

+5

Вы могли бы испытайте его перед тем, как спросить. Нет, это не требуется. 'TryParse' возвращает' false'. –

+0

результат будет 0, если попытка разбора не удалась. –

+0

@TimSchmelter Мог бы сделать, но этот механический тюркский подход позволяет решить проблему с огнем и забытьем. Проведите аналогичное время, создавая быстрый вопрос, отправляйтесь на обед, возвращайтесь к ответу - есть несколько слов, описывающих это явление, но они в основном основаны на мнениях ;-) –

ответ

5

Нет, String.IsNullOrEmpty избыточен здесь, потому что Int32.TryParse обрабатывает этот случай, возвращая false. Так что это более кратким:

int result; 
if (int.TryParse(item, out result)) 
{ 
    //do stuff 
} 

MSDN:

преобразование не выполняется, если параметр s является нулевым или String.Empty, является не правильный формат, или представляет собой число меньше чем MinValue или больше MaxValue.

1

Int.TryParse возвращает логическое значение (true, если это удастся), так что вы можете написать:

string item = null; //or a value 
int result; 
if (int.TryParse(item, out result)) 
{ 
    //do stuff 
} 
1

Нет необходимости проверять наличие пустого или пустого места, если вы используете .TryParse для преобразования. Поскольку возвращаемое значение будет ложным, если преобразование завершилось неудачно. Так безопасно использовать так:

string item = null; //or a value 
int result; 
if(int.TryParse(item, out result)) 
{ 
    //do stuff 
} 
else 
{ 
    // you can show conversion failure message here 
    // or can proceed with value 0 
} 

Дополнительное примечание: Если вы обрабатываете преобразование с помощью int.Parse, то было бы здорово, чтобы проверить string.IsNullOrEmpty поскольку null причины ArgumentNullException и пустая строка причины FormatException