TryCast y DirectCast son operadores de conversión que se asignan directamente al soporte de CLR para el casting. Pueden convertir rápidamente un objeto de un tipo base en un tipo derivado o unbox un valor de un tipo de valor. DirectCast arroja una excepción cuando el lanzamiento no es posible, TryCast devuelve Nothing si falla. Por lo general, desea favorecer a DirectCast para detectar errores de programación.
CType permite un superconjunto de conversiones, que CLR no ve con buenos ojos. El mejor ejemplo en el que puedo pensar es convertir una cadena en un número o fecha. Por ejemplo:
Dim obj As Object
obj = "4/1/2010"
Dim dt As DateTime = CType(obj, DateTime)
¿Qué vas a tener que usar si Option Strict On está en vigor. Si está apagado, entonces puede hacerlo directamente:
Option Strict Off
...
Dim dt As DateTime = obj
Muy conveniente y, por supuesto, parte del legado de VB.NET como un lenguaje de tipos dinámicos. Pero no sin problemas, esa fecha es el día de Unicorn en stackoverflow.com, pero será un día de enero cuando un británico entre en la cadena. Las conversiones inesperadas son la razón por la que CLR no permite estas directamente. El explícita, nunca una conversión sorpresa se ve así:
Dim dt As DateTime = DateTime.Parse(obj.ToString(), _
System.Globalization.CultureInfo.GetCultureInfo("en-US").DateTimeFormat)
si debe comprar en Try/DirectCast vs CType vs conversiones explícitas es más bien una elección personal. Si ahora programa con Option Strict On entonces definitivamente debería comenzar a usar Try/DirectCast. Si prefiere el lenguaje VB.NET porque le gusta la conveniencia de la escritura dinámica, no dude en permanecer en CType.
posible duplicado de [Diferencia entre DirectCast() y CType() en VB.Net] (http://stackoverflow.com/questions/3056514/difference-between-directcast-and-ctype-in -vb-net) – RMalke
@RMalke: Mi pregunta fue hecha antes de la [pregunta 'duplicada'] vinculada (http://stackoverflow.com/q/3056514). Esto es corroborado por [comentario de MarkJ] (http://stackoverflow.com/posts/comments/3138442). Además, la respuesta aceptada aquí explica 'CType' fundición en detalle, algo que la respuesta aceptada en la otra pregunta realmente no entra. En todo caso, creo que es el otro que debe cerrarse o vincularse de otro modo a esto. –