CType и Type casting Exception - PullRequest
       24

CType и Type casting Exception

3 голосов
/ 25 февраля 2011
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 ]

3 голосов
/ 25 февраля 2011

Использование Int32.TryParse :

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

Это обрабатывает регистр "", а также любое другое недопустимое значение (т.е. не число), которое может ввести пользователь.

0 голосов
/ 26 февраля 2011

Вы можете назначить возврат функции сначала переменной, затем проверить переменную перед преобразованием.

0 голосов
/ 25 февраля 2011

Вы можете использовать IsNumeric

    number = If(IsNumeric(DurationColumn), CType(DurationColumn, Integer), 0)
0 голосов
/ 25 февраля 2011

Посмотрите на TryCast и Int32.TryParse.

...