你调用的对象是空的。
当我运行程序时,我一直收到这个错误。
你调用的对象是空的。 说明:执行当前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安全!