为什么' args[0]. trim () == null '总是为假?

本文关键字:null trim args 为什么 | 更新日期: 2023-09-27 18:19:02

我有一个这样的方法:

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

为什么我得到一个注意,args[0].Trim() == null将永远是假的?

为什么' args[0]. trim () == null '总是为假?

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

修剪方法

如果当前字符串等于Empty,或者当前实例中的所有字符都是空白字符,则该方法返回Empty。

您可能只想检查

 if (args == null || args.Length == 0 || string.IsNullOrWhiteSpace(args[0]))
 {
     // null or empty array or empty first element
 }

如果args[0]null,那么当您尝试调用 Trim()方法时,您将获得NullReferenceException。不存在null值可用于==比较的执行路径。

可能想要:

if(args[0] == null || args[0].Trim() == string.Empty )
{

但更可能想要的是:

if(String.IsNullOrWhitespace(args[0]))
{

字符串。IsNullOrWhitespace是在。net 4中引入的

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

因为null不是对象,而字符串。Empty(即")是一个长度为0个字符的字符串对象。