gpt4 book ai didi

vb.net - VB.NET 中的 TryCast 将字符串转换为整数

转载 作者:行者123 更新时间:2023-12-02 01:56:01 25 4
gpt4 key购买 nike

我根本不明白如何在我的代码中使用 TryCast,但我需要使用它来验证用户输入。我在这里进行了各种搜索并查看了各种问题,但似乎没有人真正说如何使用它,而且 MSDN 网站似乎根本没有帮助。

    Function ValidateInput(Var_In As String) As Integer

If TryCast(Var_In, Integer) = Nothing Then

Return vbNull
Else
Return Var_In
End If
End Function

错误表明

The operand must be of reference type but Integer is of value type

我做错了什么的解释是什么?

TryParse 不接受超过 10 位数字,因此,例如,“12345678901”的输入将不会被接受。我该如何解决这个问题?

最佳答案

让我们尝试了解 TryCast、Convert 和 TryParse 之间的区别。

TryCast

此函数将尝试将一个对象转换为另一种类型,只要它是引用类型。

Dim MyNewObject = TryCast(MyObject, MyReferenceClass)
If IsNothing(MyNewObject) Then
MessageBox.Show("Impossible to cast")
End If

由于Integer是值类型,所以它不起作用,所以我们必须想办法......

转换

Convert Class on MSDN

来自 MSDN:

Converts a base data type to another base data type.

所以我们可以尝试:

Dim myInt = Convert.ToInt32(MyObject)

问题是,如果无法进行转换,它将生成异常 InvalidCastException

尝试解析

此函数正在尝试将String转换为您想要的内容。并且不会产生异常:

Dim myInt As Integer = 0
If Not Integer.TryParse(MyString, myInt) Then
MessageBox.show("This is not an integer")
End If

限制

将字符串转换为整数有时会很棘手...如果字符串表示的数字大于或小于Integer.MaxValueInteger.MinValue,你最终将没有任何转化...

所以你可以选择Double:

Double.TryParse(MyString, MyDouble)

或者就个人而言,如果您知道它将是一个数字,请使用十进制:

Decimal.TryParse(MyString, MyDecimal)

See Decimals on MSDN

根据 MSDN,十进制仍然有最大值和最小值:

The Decimal value type represents decimal numbers ranging from positive 79,228,162,514,264,337,593,543,950,335 to negative 79,228,162,514,264,337,593,543,950,335. The Decimal value type is appropriate for financial calculations that require large numbers of significant integral and fractional digits and no round-off errors.

Convert.ChangeType

This one也很有趣,但有点奇怪......

关于vb.net - VB.NET 中的 TryCast 将字符串转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36335196/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com