我试图使用三元If
运算符在我的VB.NET项目中保存唯一的代码行,但被抛出:
“指定的演员表无效”
' THIS WORKS FINE
If info.GetString("IdentificationType").Trim = "" Then
_Expiration = System.Data.SqlTypes.SqlDateTime.MinValue
Else
_Expiration = info.GetValue("Expiration", Expiration.GetType)
End If
' THIS THROWS AN EXCEPTION
_Expiration = If(info.GetString("IdentificationType").Trim = "",
System.Data.SqlTypes.SqlDateTime.MinValue,
info.GetValue("Expiration", Expiration.GetType))
答案 0 :(得分:1)
您的问题是
System.Data.SqlTypes.SqlDateTime.MinValue
和
info.GetValue("Expiration", Expiration.GetType)
返回不同的类型。这是我在不知道变量和返回类型的情况下所能给出的答案。
最底线,当您使用If(1, 2, 3)
时-2和3必须返回相同的类型
答案 1 :(得分:1)
System.Data.SqlTypes.SqlDateTime.MinValue的类型为 System.Data.SqlTypes.SqlDateTime
如果我不得不猜测,Expiration.GetType的类型必须为 System.DateTime 。
添加强制转换 CDate (System.Data.SqlTypes.SqlDateTime.MinValue)
尝试一下
_Expiration = If(info.GetString("IdentificationType").Trim = "",
CDate(System.Data.SqlTypes.SqlDateTime.MinValue),
info.GetValue("Expiration", Expiration.GetType))