我有这样的方法:
public string StartCapture(string[] args)
{
if(args[0].Trim() == null || args[0].Trim() == string.Empty )
{
//do stuff
}
}
为什么我会得到args[0].Trim() == null
始终为假的说明?
答案 0 :(得分:7)
Trim()
不会返回null。您可能遇到的问题是args[0]
为空,或args
本身为空,但Trim()
的结果永远不会为空,因此与null的比较将始终为false。
如果当前字符串等于Empty或当前实例中的所有字符都由空格字符组成,则该方法返回Empty。
您可能只想查看
if (args == null || args.Length == 0 || string.IsNullOrWhiteSpace(args[0]))
{
// null or empty array or empty first element
}
答案 1 :(得分:3)
如果args[0]
为null
,那么当您尝试调用 Trim()
方法时,您将获得NullReferenceException
。没有可能的执行路径null
值可用于==
比较。
你可能想要:
if(args[0] == null || args[0].Trim() == string.Empty )
{
但更可能想要:
if(String.IsNullOrWhitespace(args[0]))
{
.NET 4中引入了
答案 2 :(得分:2)
Trim()
被定义为始终返回一个值,因此,它永远不会是null
答案 3 :(得分:0)
因为null不是对象,而string.empty(即“”)是一个长度为0个字符的字符串对象。