2013-03-17 129 views
0

之前.NET 4已经出来了,我们一直在做这样的事情来检查空/空字符串:处理空/空字符串

String s; 
if ((s + "").Trim().Length == 0) 
{ 
    //do something 
} 

虽然上述方法非常有效对我们来说,我知道在.NET 4中,我们得到了一个IsNullOrWhiteSpace方法来做类似的事情。

我的问题是,哪一个更好?我们应该改用内置函数吗?

回答

4

在.NET 4上,我肯定会使用内置方法。毕竟,它说正好你正在尝试做什么。

如果你的.NET 4之前卡住了,为什么不使用:

if (s == null || s.Trim() == "") 

或者

if (s == null || s.Trim().Length == 0) 

?这两个人都说你想达到什么目的。

我绝对是不会在这里使用字符串连接。除了性能外,你对字符串连接不感兴趣。无论何时你发现你的代码做了一些实际上不是你想要实现的功能的部分,为了可读性,你应该尝试改进它。

+0

字符串串联有什么问题?这真的很糟吗? – andri 2013-03-17 17:36:51

+1

@andri:当*想*连接字符串时很好。但是你没有。你*只*使用连接来避免处理空引用。这不好。 – 2013-03-17 18:06:55

+0

我想我已经明白你的意思了。但在某些情况下,我们还需要实际处理'Trim'med字符串(如果它为null,则将它们转换为空字符串)。串联避免'null'对于这种情况来说仍然是一个坏主意? – andri 2013-03-18 02:23:09

2

我个人使用IsNullOrWhiteSpace,主要是因为使用它会使代码更清晰,并处理更多的情况(WhiteSpace部分)。这取决于你的喜好,因为这两种方法都有相同的作用。

2

为什么不写一个帮助器方法来实现在.NET 4之前IsNullOrWhiteSpace的功能?就像

public static boolean IsNullOrWhiteSpace(string input) 
{ 
    return string.IsNullOrEmpty(input) || input.Trim() == string.Empty; 
} 

不要在这里使用连接,因为Jon说。检查空/空不是一个好习惯。

+0

是的,其实*我们的一些*实施使用助手/扩展方法(以及其他一些直接使用代码的代码,如上面的示例':(')。 – andri 2013-03-18 02:17:32

+0

@andri它永远不会迟到,总是值得重构。 – 2013-03-18 03:00:34