Оператор 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