CType和类型转换异常

时间:2011-02-25 17:22:24

标签: .net vb.net winapp

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设置""

4 个答案:

答案 0 :(得分:3)

使用Int32.TryParse

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

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

答案 1 :(得分:0)

查看TryCastInt32.TryParse

答案 2 :(得分:0)

您可以使用IsNumeric

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

答案 3 :(得分:0)

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

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