【问题标题】:Any Reason Why IsNumeric() Fails On A Number?IsNumeric() 在数字上失败的任何原因?
【发布时间】:2009-08-02 18:28:13
【问题描述】:

我目前有这行代码,过去 6 个月一直在工作:

If IsNumeric(txtProductID.Text) Then
   ...do stuff
Else
   Dim msg As String = "Error!"
End If

突然之间,无论在txtProductID(包括纯数字)中输入什么样的条目,它都失败了!我有理由为此发疯吗?

【问题讨论】:

  • 它是如何失败的?它是否返回错误的值?它会引发某种异常吗?
  • 以什么方式失败?返回 false 还是抛出错误?你能在输入表单之外重现这个吗?在将 txtProductID.Text 传递给 IsNumeric 之前尝试打印它,以确保传递的内容与您认为传递的内容相同。
  • 感谢迈克尔,请参阅下面的回答。我觉得自己很笨。
  • 我刚刚投票结束这个问题,让你摆脱痛苦。我选择“垃圾邮件”作为原因,因为没有“自伤”选项。 :)

标签: asp.net vb.net isnumeric


【解决方案1】:

有点摸不着头脑,但需要注意的一点是,也许有人在同一个类中编写了一个名为 IsNumeric 的私有方法。您确定上面的代码正在执行 Microsoft.VisualBasic.IsNumeric() 吗?如果将光标放在 IsNumeric 上并按 F12,定义指向哪里?

【讨论】:

  • 我是唯一一个正在开发的人,我还没有写过另一个 IsNumeric 方法...谢谢
【解决方案2】:

在将字符串传递给函数之前尝试Trim()ing 字符串。此外,与其使用 IsNumeric 这样的 VB 特定函数,您可以尝试以下方法:

Dim input as Integer

If Integer.TryParse(txtProductID.Text, input) Then
    ....do stuff with input
Else
    Dim msg as String = "Error!"
End if

如果你的数字是十进制数,DoubleSingle也有对应的功能。

至于IsNumeric 失败的具体原因,我无法告诉你。不过,我可以告诉你,我一直发现坚持使用与语言无关而不是特定于语言的 BCL 兼容函数很有帮助,例如 IsNumericStr 等。

【讨论】:

    【解决方案3】:

    呃……我是个白痴……感谢你们的帮助,但显然我在接受输入之前清除了我的整个表单,所以“”永远不会作为“IsNumeric”传递。请不要再看这个问题了。我感觉不舒服。

    再次感谢您的帮助。

    【讨论】:

    • 我们都会偶尔犯这样的错误。我很高兴在这里解释它可以帮助您找到它。
    猜你喜欢
    • 2018-03-19
    • 2019-06-29
    • 1970-01-01
    • 1970-01-01
    • 2013-06-26
    • 1970-01-01
    • 2020-04-06
    • 2018-12-03
    • 1970-01-01
    相关资源
    最近更新 更多