我很好奇,真的。
有些代码在转换之前没有处理空字符串,实质上是调用
Dim StringToConvert As String = ""
Dim a As Integer = CInt(StringToConvert)
而不是
Dim StringToConvert As String = ""
Dim a As Integer = CInt("0" & StringToConvert)
所以它会引发错误......
我不明白的是,当我调试时,并非在我的机器上抛出错误。但在编译时会抛出错误!
以下是调用CInt
函数的内容,有时只会抛出错误:
Public NotInheritable Class SomeForm
Inherits Windows.Forms.Form
Private Sub TextBox_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles TextBox.LostFocus
StaticHolderClass.StaticMethod(DirectCast(sender,TextBoxBase))
End Sub
End Class
Public NotInheritable Class StaticHolderClass
Public Shared Sub StaticMethod(ByVal sender As Windows.Forms.TextBoxBase)
sender.Text = Format(CInt(sender.Text),"#,#")
End Sub
End Class
有谁知道为什么会这样?
答案 0 :(得分:2)
在VB中,有时在表单初始化期间遇到错误时,它不会被正确报告。有时,错误根本不会被标记,有时它似乎来自不同的位置。例如,在下面的代码中(在我的系统上),单击按钮而不是表单加载会引发错误:
Public Class Form1
Dim k As Integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
k = CInt("")
End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
k = CInt("")
End Sub
End Class
这似乎取决于环境,所以"您的结果可能会有所不同"。您有时可以通过使用显示的事件而不是加载来解决此问题。