TryCast и DirectCast - операторы приведения, которые напрямую сопоставляются с поддержкой приведения в CLR. Они могут быстро привести объект базового типа к производному типу или распаковать значение типа значения. DirectCast выдает исключение, когда приведение невозможно, TryCast ничего не возвращает, если произошел сбой. Обычно вы предпочитаете DirectCast для выявления ошибок программирования.
CType допускает расширенный набор преобразований, которые вызывает недовольство CLR. Лучший пример, который я могу придумать, - преобразование строки в число или дату. Например:
Dim obj As Object
obj = "4/1/2010"
Dim dt As DateTime = CType(obj, DateTime)
Что вы должны будете использовать, если действует Option Strict On. Если он выключен, вы можете сделать это напрямую:
Option Strict Off
...
Dim dt As DateTime = obj
Очень удобно, конечно, и является частью наследия VB.NET как языка с динамической типизацией. Но не без проблем, эта дата - день единорога на stackoverflow.com, но это будет день января, когда британец введет строку. Неожиданные преобразования являются причиной, по которой CLR не разрешает это напрямую. Явное, не удивительное преобразование выглядит так:
Dim dt As DateTime = DateTime.Parse(obj.ToString(), _
System.Globalization.CultureInfo.GetCultureInfo("en-US").DateTimeFormat)
Стоит ли покупать в Try / DirectCast против CType против явных преобразований - это скорее личный выбор. Если вы сейчас программируете с Option Strict On, вам определенно следует начать использовать Try / DirectCast. Если вы предпочитаете язык VB.NET, потому что вам нравится удобство динамической типизации, не стесняйтесь оставаться на CType.