以下是例外:
“从字符串”“转换为”Double“类型无效。”
以下是抛出异常的代码行(通过在调试器中逐步确认):
If LoanData.Item("ApplicationId") <> "" AndAlso LoanData.Item("ApplicationId") IsNot DBNull.Value Then
有什么想法吗?
答案 0 :(得分:1)
你试过LoanData.Item(“ApplicationId”)。toString()?
答案 1 :(得分:1)
LoanData.Item("ApplicationId")
可能会返回一个双倍。
您正在尝试将其与字符串进行比较。
如果这是问题,你可以这样做:
LoanData.Item("ApplicationId").ToString() <> ""
答案 2 :(得分:1)
LoanData.Item("ApplicationId")
中存储的值必须为Double
类型。
VB.NET编译器只允许您使用<>
运算符,因为您必须拥有Option Strict Off
。假设LoanData.Item("ApplicationId")
的值必须为String
并且正在尝试进行相应的投射。
由于值不 String
,因此您获得了InvalidCastException
。
您可以使用<>
代替使用Equals
运算符,这将导致调用Equals
方法LoanData.Item("ApplicationId")
的任何类型Object.Equals
拥有(或If Not LoanData.Item("ApplicationId").Equals("") AndAlso LoanData.Item("ApplicationId") IsNot DBNull.Value Then
方法,如果该类型没有覆盖它):
{{1}}
这应该表现出与您当前最接近的行为而不会导致异常。
答案 3 :(得分:0)
值得注意的是,顺便说一句,VB6会允许人们直接将双精度数字与字符串进行比较,但这打破了比较的传递属性,因为“9”会大于“8Q”,而“8Q”会更大比双10.2(因为在这种情况下double将转换为字符串),但双10.2将大于“9”(因为在这种情况下字符串将转换为double)。 Eeks。