C# 为什么'args[0].Trim()==null'总是false?

C# 为什么'args[0].Trim()==null'总是false?,c#,C#,我有这样一种方法: public string StartCapture(string[] args) { if(args[0].Trim() == null || args[0].Trim() == string.Empty ) { //do stuff } } 为什么我会注意到args[0]。Trim()==null将始终为false?Trim()不会返回null。您可能会遇到这样的问题:如果args[0]为null,或者args本身为null,但是

我有这样一种方法:

public string StartCapture(string[] args)
{
    if(args[0].Trim() == null || args[0].Trim() == string.Empty )
    {
        //do stuff
    }
}
为什么我会注意到
args[0]。Trim()==null
将始终为false?

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

如果当前字符串等于空或当前实例中的所有字符都由空白字符组成,则该方法返回空

你可以简单地检查一下

 if (args == null || args.Length == 0 || string.IsNullOrWhiteSpace(args[0]))
 {
     // null or empty array or empty first element
 }
Trim()
不会返回null。您可能会遇到这样的问题:如果
args[0]
为null,或者
args
本身为null,但是
Trim()
的结果永远不会为null,因此与null的比较将始终为false

如果当前字符串等于空或当前实例中的所有字符都由空白字符组成,则该方法返回空

你可以简单地检查一下

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

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

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

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

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

如果
args[0]
null
,那么当您尝试调用
Trim()
方法时,将得到一个字符串。没有可能的执行路径,其中
空值可用于
=
比较

您可能需要:

但更可能的情况是:

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

是在.NET 4中引入的

如果
args[0]
null
,则在尝试调用
Trim()。没有可能的执行路径,其中
空值可用于
=
比较

您可能需要:

但更可能的情况是:

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

在.NET 4中作为旁白引入。我相信这个方法会对你有用:(.仅限.NET4.0)。作为旁白。我相信这个方法会对你有用:(.NET4.0而已)。你为什么要检查字符串的长度是否为0,如果是这样,那么它就是一个空字符串。你为什么不知道IsNullOrEmpty?我在哪里检查了字符串的长度?我只将数组与null进行了比较,我检查了数组的长度是否有0个元素,然后我只检查了第一个元素(如果有)。请记住,在问题中,它是
string[]args
。为什么要检查字符串的长度是否为0,如果是这种情况,则它是一个空字符串。你为什么不知道IsNullOrEmpty?我在哪里检查了字符串的长度?我只将数组与null进行了比较,我检查了数组的长度是否有0个元素,然后我只检查了第一个元素(如果有)。请记住,在问题中,它是
string[]args