你调用的对象是空的。

当我运行程序时,我一直收到这个错误。

你调用的对象是空的。 说明:执行当前Web请求期间发生未处理的exception。 请查看堆栈跟踪,了解有关错误的更多信息以及源代码的位置。 exception详细信息:System.NullReferenceException:未将对象引用设置为对象的实例。

Source Error: Line with error: Line 156: if (strSearch == "" || strSearch.Trim().Length == 0) 

它应该写的正确方法是什么?

.NET 4.0中的正确方法是:

 if (String.IsNullOrWhiteSpace(strSearch)) 

上面使用的String.IsNullOrWhiteSpace方法相当于:

 if (strSearch == null || strSearch == String.Empty || strSearch.Trim().Length == 0) // String.Empty is the same as "" 

参考IsNullOrWhiteSpace方法

http://msdn.microsoft.com/en-us/library/system.string.isnullorwhitespace.aspx

指示指定的string是否为空,空白或仅由空格字符组成。

在以前的版本中,你可以做这样的事情:

 if (String.IsNullOrEmpty(strSearch) || strSearch.Trim().Length == 0) 

上面使用的String.IsNullOrEmpty方法相当于:

 if (strSearch == null || strSearch == String.Empty) 

这意味着您仍然需要根据示例检查.Trim().Length == 0 “IsWhiteSpace”情况。

参考IsNullOrEmpty方法

http://msdn.microsoft.com/en-us/library/system.string.isnullorempty.aspx

指示指定的string是否为空或空string。

说明:

你需要确保strSearch (或任何variables)不是null然后使用点字符( . )对其进行解引用 – 即在执行strSearch.SomeMethod()strSearch.SomeProperty您需要检查strSearch != null

在你的例子中,你要确保你的string有一个值,这意味着你要确保string:

  • 不是null
  • 不是空string( String.Empty / ""
  • 不只是空白

在上面的情况下,你必须把“是空吗?” 的情况下,所以它不会继续检查其他情况下(和错误),当string为null

.Net的所有版本:

 if (String.IsNullOrEmpty(strSearch) || strSearch.Trim().Length == 0) 

.Net 4.0或更高版本:

 if (String.IsNullOrWhitespace(strSearch)) 

在这种情况下,strSearch可能是空的(而不是简单的空)。

尝试使用

String.IsNullOrEmpty(strSearch)

如果你只是想确定string是否没有任何内容。

我知道这是大约一年前发布的,但这是供用户以供将来参考。

我遇到过类似的问题。 在我的情况(我会尽量简短,请让我知道如果你想更多的细节),我试图检查一个string是否为空(string是电子邮件的主题)。 无论我做了什么,它总是返回相同的错误信息。 我知道我做的是正确的,但仍然不断抛出相同的错误信息。 然后,我明白了,我正在检查一个电子邮件(实例/对象)的主题(string),如果电子邮件(实例)在第一个地方已经是空的。 我怎么能检查一个电子邮件的主题,如果电子邮件已经是空的..我检查,如果电子邮件是空的,它工作正常。

同时检查主题(string)我使用IsNullorWhiteSpace(),IsNullOrEmpty()方法。

 if (email == null) { break; } else { // your code here } 

我想扩展MattMitchell的答案,说你可以为这个function创build一个扩展方法:

 public static IsEmptyOrWhitespace(this string value) { return String.IsEmptyOrWhitespace(value); } 

这使得可以调用:

 string strValue; if (strValue.IsEmptyOrWhitespace()) // do stuff 

对我来说,这比调用静态String函数更清洁,而仍然是NullReference安全!