- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我根本不明白如何在我的代码中使用 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是值类型,所以它不起作用,所以我们必须想办法......
转换
来自 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.MaxValue
和Integer.MinValue
,你最终将没有任何转化...
所以你可以选择Double
:
Double.TryParse(MyString, MyDouble)
或者就个人而言,如果您知道它将是一个数字,请使用十进制:
Decimal.TryParse(MyString, MyDecimal)
根据 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/
我试图将字符串转换为 double ,但我不希望它抛出异常,而是返回一些值。我找到了 TryCast 函数,但似乎我没有正确使用它。我试试 TryCast(string, Double)它说“Doub
Table1有数据要导入Table2。 Table1 仅包含 varchar 字段,但它们将被强制转换为要导入到 Table2 中的任何字段的类型。 数据必须一次导入一行,所以我可以捕获异常以找出哪些
如何将以下vb代码转换成c#? Dim request As HttpWebRequest = TryCast(WebRequest.Create(address), HttpWebRequest)
当我尝试将 Object obj 转换为类型 T 时,如果无法转换,则说明有问题。 在我转换对象之后,我将寻找使用转换对象的方法。 相反,我会期望在我将要转换它的地方得到异常,而不是说我将在哪里使用该
自从我在 2005 年从 VB6 迁移到 VB.NET 以来,我一直在使用 CType 从一种数据类型转换为另一种数据类型。我这样做是因为它打字速度更快,以前存在于 VB6 中,而且我不知道为什么我必
我根本不明白如何在我的代码中使用 TryCast,但我需要使用它来验证用户输入。我在这里进行了各种搜索并查看了各种问题,但似乎没有人真正说如何使用它,而且 MSDN 网站似乎根本没有帮助。 F
这个问题已经有答案了: 已关闭13 年前。 Possible Duplicate: Why use TryCast instead of DirectCast? 我想了解TryCast和DirectC
我很惊讶我们在 TypeScript Docs 中没有看到太多关于转换的信息.尝试在 TypeScript 中创建一个简单的 tryCast 函数,类似于我们在 .Net 中的函数。所以基本上,尝试转
我发现 .NET 4.0/VS 2010 中 TryCast 的这种行为相当困惑。 根据我的理解,TryCast 的工作方式类似于 DirectCast,但如果无法进行强制转换,则将返回 Nothin
我如何将 varchar 参数转换为日期时间,如果转换失败,则默认使用 GetDate()?我试图将它放在 Try/Catch 中,但显然这在 UDF 中不起作用。简单地检查日期时间是否为空也不起作用
我有一个 LINQ 查询来检索整数列的最大值。该列在数据库中定义为 NOT NULL。但是,在 SQL 中使用 MAX 聚合函数时,如果查询没有返回任何行,您将得到 NULL 结果。 这是我针对 No
我是一名优秀的程序员,十分优秀!