int.TryParse 之前进行 Nullcheck [已关闭]

问题描述 投票:0回答:3

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

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

真的需要每次都检查

IsNullOrEmpty
吗?如果它是
null
或空,则解析应该失败。

c# int
3个回答
20
投票

不,

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

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

MSDN:

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


2
投票

Int.TryParse

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

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

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
和空字符串导致
FormatException

    

© www.soinside.com 2019 - 2024. All rights reserved.