三元运算符和赋值

时间:2018-12-31 16:40:26

标签: vb.net

我试图使用三元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))

2 个答案:

答案 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))