为什么`args [0] .Trim()== null`总是假的?

时间:2011-12-30 12:58:59

标签: c#

我有这样的方法:

public string StartCapture(string[] args)
{
    if(args[0].Trim() == null || args[0].Trim() == string.Empty )
    {
        //do stuff
    }
}

为什么我会得到args[0].Trim() == null始终为假的说明?

4 个答案:

答案 0 :(得分:7)

Trim()不会返回null。您可能遇到的问题是args[0]为空,或args本身为空,但Trim()的结果永远不会为空,因此与null的比较将始终为false。

Trim Method

  

如果当前字符串等于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中引入了

String.IsNullOrWhitespace

答案 2 :(得分:2)

Trim()被定义为始终返回一个值,因此,它永远不会是null

答案 3 :(得分:0)

因为null不是对象,而string.empty(即“”)是一个长度为0个字符的字符串对象。