在int.TryParse之前的Nullcheck

时间:2017-02-15 11:35:40

标签: c# int

我有代码,其中许多字符串被解析为整数值。

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

每次真的需要检查IsNullOrEmpty吗?如果它是null或为空,则解析应该失败。

3 个答案:

答案 0 :(得分:7)

不,String.IsNullOrEmpty在这里是多余的,因为Int32.TryParse通过返回false来处理这种情况。所以这更简洁:

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

MSDN:

  

如果s参数为null或String.Empty ,则转换失败   格式不正确,或者表示小于MinValue的数字   或者大于MaxValue。

答案 1 :(得分:2)

Int.TryParse将返回一个布尔值(true如果成功),所以你可以写:

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

答案 2 :(得分:2)

如果您使用.TryParse进行转换,则无需检查null或为空。如果转换失败,返回值将为false。所以这样使用是安全的:

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和空字符串原因{{1 }}