在 VB 中分配之前检查用户输入
Checking user input before assinging it in VB
在将输入分配给变量之前,您将如何检查输入是否有效。例如,如果我有这个:
Dim Number As Integer
Number = Console.ReadLine()
如果有人输入的不是数字,就会抛出大小写无效异常。这当然可以用 try/catch 来解决,但有人告诉我使用它们是不好的做法。此外,如果我要使用 IsNumeric(),我仍然需要存储输入,甚至在设法检查它是否为数字之前冒着另一个转换错误的风险。解决此问题的最佳方法是什么?
使用TryParse
。要使用您的示例:
Dim Number As Integer
If Int32.TryParse(Console.ReadLine(), Number) Then
' Logic for the successful conversion
Else
' Logic for the unsuccessful conversion
End If
如果转换成功,TryParse
将为returnTrue,值将在输出参数(Number)中。如果转换不成功,TryParse
将为 return false,Number(out 参数)将为 0。
这里有更多关于 Int32.TryParse 的信息;其他几种数据类型也有一个 TryParse
方法。
Console.ReadLine 方法 returns 一个字符串,因此使用整数变量并不好。
提示是始终检查文档或智能感知,以获取返回值的类型。
下面将读取值到一个String变量中,并使用Integer.TryParse方法将其解析为一个Integer。
Dim strNumber As String
Dim iNumber as Integer
strNumber = Console.ReadLine()
If Not Integer.TryParse(strNumber, iNumber) Then
'Handle error
End If
在将输入分配给变量之前,您将如何检查输入是否有效。例如,如果我有这个:
Dim Number As Integer
Number = Console.ReadLine()
如果有人输入的不是数字,就会抛出大小写无效异常。这当然可以用 try/catch 来解决,但有人告诉我使用它们是不好的做法。此外,如果我要使用 IsNumeric(),我仍然需要存储输入,甚至在设法检查它是否为数字之前冒着另一个转换错误的风险。解决此问题的最佳方法是什么?
使用TryParse
。要使用您的示例:
Dim Number As Integer
If Int32.TryParse(Console.ReadLine(), Number) Then
' Logic for the successful conversion
Else
' Logic for the unsuccessful conversion
End If
如果转换成功,TryParse
将为returnTrue,值将在输出参数(Number)中。如果转换不成功,TryParse
将为 return false,Number(out 参数)将为 0。
这里有更多关于 Int32.TryParse 的信息;其他几种数据类型也有一个 TryParse
方法。
Console.ReadLine 方法 returns 一个字符串,因此使用整数变量并不好。 提示是始终检查文档或智能感知,以获取返回值的类型。
下面将读取值到一个String变量中,并使用Integer.TryParse方法将其解析为一个Integer。
Dim strNumber As String Dim iNumber as Integer strNumber = Console.ReadLine() If Not Integer.TryParse(strNumber, iNumber) Then 'Handle error End If