我的代码中有一行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
然而,当相同的代码被移植到生产时它运行没有任何故障,任何想法为什么?
答案 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)