我有一些代码,其中许多字符串被解析为整数值。
string item = null; //or a value
int result;
if (!string.IsNullOrEmpty(item) && int.TryParse(item, out result))
{
//do stuff
}
真的需要每次都检查
IsNullOrEmpty
吗?如果它是 null
或空,则解析应该失败。
不,
String.IsNullOrEmpty
在这里是多余的,因为Int32.TryParse
通过返回false
来处理这种情况。所以这样更简洁:
if (int.TryParse(item, out int result))
{
//do stuff
}
MSDN:
如果 s 参数为 null 或 String.Empty,则转换失败,即 格式不正确,或者表示的数字小于 MinValue 或大于 MaxValue。
Int.TryParse
将返回一个布尔值(如果成功则为
true
),所以你可以写:
string item = null; //or a value
int result;
if (int.TryParse(item, out result))
{
//do stuff
}
.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
和空字符串导致
FormatException