如果vb.net中的运算符给出错误

时间:2013-02-14 09:11:33

标签: vb.net

我的代码中有一行notes = If(IsDBNull(notes),"","")。当我尝试在localhost上运行时,

我在第51行收到错误:

  

描述:编译服务此请求所需的资源时发生错误。请查看以下特定错误详细信息并相应地修改源代码。

Compiler Error Message: BC30201: Expression expected.

Source Error:



Line 49:       End Try  
Line 50:       
**Line 51:     notes = If(IsDBNull(notes),"","")** 
Line 52:       'Context.Response.Output.Write("AAAA"+notes+"MMM")
Line 53:        if notes.Trim().Equals("TIMEUP") then  


Version Information: Microsoft .NET Framework Version:2.0.50727.5466; ASP.NET Version:2.0.50727.5459 

然而,当相同的代码被移植到生产时它运行没有任何故障,任何想法为什么?

3 个答案:

答案 0 :(得分:3)

你的意思是:

IIf(IsDBNull(notes),"","")

注意额外的我。

如果声明声明为第53行所示的声明:

If <condition> Then

IIF声明声明为:

IIf(Expression, True, False)

http://msdn.microsoft.com/en-gb/library/27ydhh0d(v=vs.71).aspx

答案 1 :(得分:3)

问题是VS {2008引入了If-operator,但您正在编译.NET Framework版本:2.0。

这将在.NET 2上编译:

Dim notesObj As Object = IIf(IsDBNull(notes),"","")

区别在于IIF返回一个对象,而If是强类型的(conditional operator (?) in C#),所以你可以写:

Dim notesStr = If(IsDBNull(notes),"","") ' a string '

答案 2 :(得分:2)

VB.NET 2008引入了If 运算符,其中短路 - 也就是说,if-true中只有一个,如果 - 评估假表达式。

在此之前,所有可用的内容都是IIf 函数,作为函数,它总是评估两者 if-true和if-false表达式。

看起来您的生产箱使用的是VB.NET 2008或更高版本,而您的本地计算机使用的是VB.NET 2005或更早版本。