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

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

Замечания

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

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

Ошибки и сбои

TryCast Создает ошибку компилятора, если она обнаруживает, что отношения наследования или реализации отсутствуют. Но отсутствие ошибки компилятора не гарантирует успешное преобразование. Если требуемое преобразование сужается, он может завершиться ошибкой во время выполнения. Если это произойдет, TryCast возвращает ничего.

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

Сравнение ключевое слово преобразования типов выглядит следующим образом.

Ключевое слово Типы данных Связь аргументов Сбой во время выполнения
CType Function Любые типы данных Преобразование расширения или сужения должно быть определено между двумя типами данных Бросает InvalidCastException
Оператор DirectCast Любые типы данных Один тип должен наследоваться от другого типа или реализовать другой тип Бросает InvalidCastException
TryCast Только ссылочные типы Один тип должен наследоваться от другого типа или реализовать другой тип Возвращает ничего

Пример

В следующем примере показано, как использовать 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

См. также