VB.Net-我能否检查一个字符串是否为IsNumeric,以及是否将其转换为要比较的数字,都在一个IF语句条件内?

问题描述 投票:0回答:1

我有一个数据库,其中的列标记为PrintOnPage。它可以保存值“ ALL”,“ LAST”或特定的页码(1、2、3等),它们都存储为字符串。

在我的代码中,我有以下IF语句:

If ((PrintOnPage.ToUpper = "ALL") OrElse
    (PrintOnPage.ToUpper = "LAST" And iPageNo = (_indexDatabase.GetField("LastPage").Trim) OrElse
    (IsNumeric(PrintOnPage) And CInt(PrintOnPage) = iPageNo)) Then

如果PrintOnPage是无法转换为INT的字符串,则IF语句的最后一个条件将中断。因为PrintOnPage可以是LAST,而iPageNo!=可以是数据库中指定的最后一页,直到将其循环到正确的页面为止,这是一个问题。

即使IsNumeric为False,仍然会检查AND之后条件的第二部分,因此会中断。如果可以的话,我试图避免嵌套到许多IF语句。

在相同的IF语句中是否有解决此问题的方法?

vb.net if-statement logic conditional-statements
1个回答
1
投票

您可以使用AndAlso来缩短If评估,就像您正在使用OrElse

If ((PrintOnPage.ToUpper = "ALL") OrElse
    (PrintOnPage.ToUpper = "LAST" AndAlso iPageNo = (_indexDatabase.GetField("LastPage").Trim) OrElse
    (IsNumeric(PrintOnPage) AndAlso CInt(PrintOnPage) = iPageNo)) Then

这样,如果第一部分IsNumeric(PrintOnPage)失败,它将不会尝试评估以下部分。

© www.soinside.com 2019 - 2024. All rights reserved.