Оператор TryCast (Visual Basic)

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

Заметки

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

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

Ошибки и сбои

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

Ключевые слова преобразований

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

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

Типы данных

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

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

Функция CType (Visual Basic)

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

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

Вызывает InvalidCastException

Оператор DirectCast (Visual Basic)

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

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

Вызывает 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

См. также

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

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

Явные и неявные преобразования (Visual Basic)