我通常这样做:
void Incoming(String str)
{
if (str == "")
{
}
}
但我看到别人的代码这样做了:
void Incoming(String str)
{
if (str == String.Empty)
{
}
}
在我的情况下,我知道str不应为null。因此,如果字符串为null而不是隐藏问题,它将导致异常,因此以下是一个好主意:
void Incoming(String str)
{
if (str.Length == 0)
{
}
}
我已经注意到它也被使用了,但这似乎接受了字符串可能为null,而不是去修复它为空的原因。静默处理字符串为空是一个好主意吗?
void Incoming(String str)
{
if (String.IsNullOrEmpty(str))
{
}
}
答案 0 :(得分:2)
if(String.IsNullOrEmpty(str1))
{
//do stuff
}
始终使用此功能!
答案 1 :(得分:1)
What is the best way of testing that a string is empty?
最后一个选项String.IsNullOrEmpty(str)
最好这样做。它会检查两种情况
null
String.Empty
,即""
。答案 2 :(得分:0)
通常,您不应该使用系统流的例外。因此,如果String可以(但不应该)为null,那么检查NullOrEmpty并在那里修复它。 检查是否为NULL或空是什么问题?两者都会导致一些修复代码,或者你可以抛出自己的" IHateNullStrings" -Exception。
如果您想要完全安全:
String.IsNullOrWhiteSpace
用这个检查
编辑:异常流是程序传递的路径。使用异常#34;可能发生" -things使f.e.调试方式比较复杂。 对此进行了大量讨论,例如: :Why not use exceptions as regular flow of control?
答案 3 :(得分:0)
如果字符串永远不会为null,请在测试它是否为空之前进行显式空检查。
if (string == null) throw new Exception(); // ArgumentNullException, for example
if (string == "")
{
...
}
答案 4 :(得分:0)
虽然你说str不应该为null,但是你依赖外部的东西来坚持这一点,这不是一个好主意。另外,在if块中抛出异常并不是一个好主意,因为:
所以如上所述你可以做一个单独的空检查:
if (str == null) throw new ArgumentNullException("str cannot be null");
或者你可以将null和string.Empty视为相等并使用(这将是我的默认值):
if (string.IsNullOrEmpty(str))
{
//do something
}
或者您甚至可以使用以下方法处理与null和empty相同的空字符串:
if (string.IsNullOrWhiteSpace(str))
{
/do something
}
这在很大程度上取决于你获得空字符串时的逻辑。但是,你应该总是写一些防御性代码来处理不符合前提条件的论据