Поделиться через


TryCast

Обновлен: Ноябрь 2007

Представляет операцию преобразования типов, которая не выдает исключение.

Заметки

Если попытка преобразования завершилась неудачно, то CType и DirectCast выдадут ошибку InvalidCastException. Это может негативно сказаться на производительности приложения. TryCast возвращает Nothing (Visual Basic), поэтому вместо обработки возможных исключений, необходимо только проверить возвращаемый результат на Nothing.

Ключевое слово TryCast используется так же, как ключевые слова Функция CType и DirectCast. В качестве первого аргумента указывается выражение, а во втором аргументе — тип, в который надо преобразовать. TryCast работает только для ссылочных типов, таких как классы и интерфейсы. Она требует отношения наследования или реализации между двумя типами. Это означает, что один тип должен наследовать или реализовывать другой.

Ошибки и сбои

TryCast создает ошибку компилятора, если она обнаруживает, что отношения наследования или реализации не существует. Однако отсутствие ошибки компилятора не гарантирует успешное преобразование. Если необходимое преобразование является сужающим, то возможен сбой во время выполнения. В этом случае TryCast вернет Nothing (Visual Basic).

Зарезервированные слова преобразований

Ниже представлено сравнение зарезервированных слов преобразований типа.

Ключевое слово

Типы данных

Отношение аргументов

Ошибка во время выполнения

Функция CType

Все типы данных

Между двумя типами данных необходимо определить расширяющее или сужающее преобразование.

Вызывает InvalidCastException

DirectCast

Все типы данных

Один тип должен наследовать или реализовывать другой

Вызывает InvalidCastException

TryCast

Только ссылочные типы

Один тип должен наследовать или реализовывать другой

Возвращает Nothing (Visual Basic)

Пример

В следующем примере показано использование TryCast.

Function PrintTypeCode(ByVal obj As Object) As String
    Dim objAsConvertible As IConvertible = TryCast(obj, IConvertible)
    If objAsConvertible Is Nothing Then
        Return obj.ToString() & " does not implement IConvertible"
    Else
        Return "Type code is " & objAsConvertible.GetTypeCode()
    End If
End Function

См. также

Основные понятия

Расширяющие и сужающие преобразования

Явные и неявные преобразования