CType и Type casting Exception
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 ответа
Используйте Int32.TryParse:
Dim number as Integer
If Not Int32.TryParse(DurationColumn, number) Then number = 0
return number
Это обрабатывает регистр "", а также любое другое недопустимое значение (т.е. не число), которое может ввести пользователь.
Ты можешь использовать IsNumeric
number = If(IsNumeric(DurationColumn), CType(DurationColumn, Integer), 0)
Вы можете назначить функцию return переменной сначала, а затем проверить переменную перед преобразованием.
Dim sRet As String = Item(DurationColumn)
If Not String.IsNullOrEmpty(sRet) Then Convert.ToInt32(sRet)