VB.NET比较语句的例外

时间:2010-07-28 18:10:11

标签: vb.net

以下是例外:

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

以下是抛出异常的代码行(通过在调试器中逐步确认):

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

有什么想法吗?

4 个答案:

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