代码之家  ›  专栏  ›  技术社区  ›  Scott

VB.NET比较语句异常

  •  1
  • Scott  · 技术社区  · 14 年前

    从字符串“”转换为类型“Double”无效

    下面是引发异常的代码行(通过在调试器中逐步执行确认):

    If LoanData.Item("ApplicationId") <> "" AndAlso LoanData.Item("ApplicationId") IsNot DBNull.Value Then
    

    有什么想法吗?

    4 回复  |  直到 14 年前
        1
  •  1
  •   Alec Sanger    14 年前

    你试过LoanData.Item(“ApplicationId”).toString()吗?

        2
  •  1
  •   Leniel Maccaferri    14 年前

    LoanData.Item("ApplicationId")

    你想把它和一个字符串做比较。

    如果是这个问题,你可以这样做:

    LoanData.Item("ApplicationId").ToString() <> ""

        3
  •  1
  •   Dan Tao    14 年前

    存储在中的值 LoanData.Item("ApplicationId") Double .

    VB.NET编译器允许您使用 <> 因为你必须 Option Strict Off . 它假设 必须是一个 String 并试图相应地施展。

    InvalidCastException .

    而不是使用 <> 接线员,你可以用 Equals LoanData.Item(“ApplicationId”) Object.Equals 方法,如果该类型尚未重写它):

    If Not LoanData.Item("ApplicationId").Equals("") AndAlso LoanData.Item("ApplicationId") IsNot DBNull.Value Then
    

    这应该表现出最接近您当前拥有的行为,而不会导致异常。

        4
  •  0
  •   supercat    14 年前

    值得注意的是,顺便说一句,VB6允许直接将double与字符串进行比较,但这打破了比较的传递性,因为“9”将大于“8Q”,而“8Q”将大于double 10.2(因为在这种情况下,double将转换为字符串),但是double 10.2将大于“9”(因为在这种情况下字符串将转换为double)。鳗鱼。