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()
被定义为始终返回值,因此它永远不能为nullTrim()
被定义为始终返回值,因此它永远不能为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
。