我有代码,其中许多字符串被解析为整数值。
string item = null; //or a value
int result;
if (!string.IsNullOrEmpty(item) && int.TryParse(item, out result))
{
//do stuff
}
每次真的需要检查IsNullOrEmpty
吗?如果它是null
或为空,则解析应该失败。
答案 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 }}