你能告诉我为什么这行代码会出错:-“对象引用未设置为对象的实例”

 searchstr = IIf(
    Not searchstr Is Nothing
    AndAlso searchstr.Length > 0,
    searchstr.Replace("Desig_id", "designation_id"), "")

您还可以提供替代方法来进行此类验证吗?

最佳答案

IIf 函数的行为与您认为的不同。它不是像 C++ 或 C# 那样的三元式运算符。它只是一个普通函数,这意味着在将它传递给 IIf 之前,您的条件检查和 searchstr.Replace 都将被评估。如果 searchstr 为 null,searchstr.Replace(...) 将抛出 NullReferenceException,即使您预计它根本不会被调用。

VS2008 中添加了 If 运算符以支持这一点,但如果您在 2005 年,则必须将其扩展为 If/Else 块:

If Not searchstr Is Nothing AndAlso searchstr.Length > 0 Then
    searchstr = searchstr.Replace("Desig_id", "designation_id")
Else
    searchstr = ""
End If

关于vb.net - Visual Studio 2005 - 没什么检查,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9374105/

10-11 08:28