运行程序时,我一直收到此错误。
对象引用未设置为对象的实例。 描述:执行当前Web请求期间发生未处理的异常。 请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。 异常详细信息:System.NullReferenceException:未将对象引用设置为对象的实例。
Source Error:
Line with error:
Line 156: if (strSearch == "" || strSearch.Trim().Length == 0)
应该写出正确的方法是什么?
答案 0 :(得分:102)
.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
指示指定的字符串是Nothing,empty还是contains 只有空白字符。
在早期版本中,您可以执行以下操作:
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
指示指定的字符串是Nothing还是Empty字符串。
<强>解释强>
在使用点字符(strSearch
)取消引用之前,您需要确保null
(或任何变量)不是.
- 即在{{1}之前或strSearch.SomeMethod()
您需要检查strSearch.SomeProperty
。
在你的例子中,你想确保你的字符串有一个值,这意味着你要确保字符串:
strSearch != null
/ String.Empty
)在上述情况中,您必须将“它是否为空?”首先是情况,因此当字符串为""
时,它不会继续检查其他情况(和错误)。
答案 1 :(得分:5)
strSearch可能为null(不仅仅是空的)。
尝试使用
String.IsNullOrEmpty(strSearch)
如果您只是想确定该字符串是否没有任何内容。
答案 2 :(得分:5)
我知道这是大约一年前发布的,但这是供用户参考的。
我遇到过类似的问题。在我的情况下(我会尽量简短,如果你想了解更多细节,请告诉我),我试图检查字符串是否为空(字符串是电子邮件的主题)。无论我做什么,它总是返回相同的错误消息。我知道我做得对,但它仍然不断抛出相同的错误信息。然后我突然意识到,我正在检查电子邮件(实例/对象)的主题(字符串),如果电子邮件(实例)在第一个位置已经是空的话。我怎么能检查电子邮件的主题,如果电子邮件已经是空的..我检查了如果电子邮件是空的,它工作正常。
在检查主题时(字符串)我使用了IsNullorWhiteSpace(),IsNullOrEmpty()方法。
if (email == null)
{
break;
}
else
{
// your code here
}
答案 3 :(得分:1)
我想通过说你可以为这个功能创建一个扩展方法来扩展MattMitchell的答案:
public static IsEmptyOrWhitespace(this string value) {
return String.IsEmptyOrWhitespace(value);
}
这使得可以打电话:
string strValue;
if (strValue.IsEmptyOrWhitespace())
// do stuff
对我而言,这比调用静态String
函数要清晰得多,同时仍然是NullReference的安全!