Visual Studio 2005 - 没有检查

Suj*_*ran 3 vb.net visual-studio-2005

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

 searchstr = IIf(
    Not searchstr Is Nothing
    AndAlso searchstr.Length > 0,
    searchstr.Replace("Desig_id", "designation_id"), "")  
Run Code Online (Sandbox Code Playgroud)

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

Jas*_*ski 6

IIf功能不符合您的想法.它不是一个三元风格的运算符,而是 C++或C#.它只是一个普通的函数,这意味着你的条件检查 searchstr.Replace在传递之前都要进行评估IIf.如果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
Run Code Online (Sandbox Code Playgroud)

  • @Kamil:很好的捕捉,但它比那更微妙!由于此特定功能不需要CLR支持,也不需要任何类库支持,因此仅依赖于编译器编译语言版本VB9或更高版本.现在使用VS2010,我可以在面向.NET 2.0的项目中使用If运算符.:-) (4认同)
  • 更确切地说:它不依赖于Visual Studio版本,它依赖于.NET Framework版本.您可能正在使用.NET 2.0. (3认同)