CType 和类型转换异常

发布于 2024-10-19 15:46:43 字数 543 浏览 1 评论 0原文

Public Property Duration() As Integer
Get
  Try
    Return CType(Item(DurationColumn), Integer)
  Catch e As Global.System.InvalidCastException
    Throw New Global.System.Data.StrongTypingException("The value for column 'Duration' in table 'T_MembershipSale' is DBNull.", e)
  End Try
End Get
Set(ByVal value As Integer)
  Item(DurationColumn) = value
End Set
End Property

当用户想要将 "" 作为 Item(DurationColumn) 分配给整数时会发生什么?我有一个例外。有什么干净的解决方案可以避免这种情况并为 "" 设置 0 吗?

Public Property Duration() As Integer
Get
  Try
    Return CType(Item(DurationColumn), Integer)
  Catch e As Global.System.InvalidCastException
    Throw New Global.System.Data.StrongTypingException("The value for column 'Duration' in table 'T_MembershipSale' is DBNull.", e)
  End Try
End Get
Set(ByVal value As Integer)
  Item(DurationColumn) = value
End Set
End Property

What happens when a user wants to allocate "" as Item(DurationColumn) to integer? I get an exception. Any clean solution to avoid this and set 0 for ""?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

请你别敷衍 2024-10-26 15:46:43

使用 Int32.TryParse

Dim number as Integer
If Not Int32.TryParse(DurationColumn, number) Then number = 0
return number

这也可以处理“”的情况与用户可能输入的任何其他无效值(即非数字)一样。

Use Int32.TryParse:

Dim number as Integer
If Not Int32.TryParse(DurationColumn, number) Then number = 0
return number

This handles the case of "", as well as any other invalid value (i.e. non-number) the user might enter.

浅黛梨妆こ 2024-10-26 15:46:43

您可以先将函数返回值分配给变量,然后在转换之前检查变量。

    Dim sRet As String = Item(DurationColumn)
    If Not String.IsNullOrEmpty(sRet) Then Convert.ToInt32(sRet)

You could assign function return to variable first then check variable before conversion.

    Dim sRet As String = Item(DurationColumn)
    If Not String.IsNullOrEmpty(sRet) Then Convert.ToInt32(sRet)
2024-10-26 15:46:43

看看 TryCastInt32.TryParse

Look at TryCast and Int32.TryParse.

兔小萌 2024-10-26 15:46:43

您可以使用IsNumeric

    number = If(IsNumeric(DurationColumn), CType(DurationColumn, Integer), 0)

You can use IsNumeric

    number = If(IsNumeric(DurationColumn), CType(DurationColumn, Integer), 0)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文