TryCastとDirectCastは、CLRのキャストのサポートに直接マップするキャスト演算子です。基本型のオブジェクトを派生型にすばやくキャストしたり、値型の値のボックスを解除したりできます。DirectCastは、キャストが不可能な場合に例外をスローします。失敗した場合、TryCastはNothingを返します。通常、プログラミングの間違いを見つけるために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のユニコーンの日ですが、ブリトン人が文字列に入る1月の日になるでしょう。予期しない変換が、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を使用することを躊躇しないでください。