オブジェクトを別の型にキャストするにはDirectCast演算子を使います。 TryCast演算子を使うと、キャストできなかった場合でも例外をスローせずキャスト結果をNothingにすることができます。
DirectCast演算子
DirectCast演算子はオブジェクトをある型にキャストするための演算子で、DirectCast(変数, キャスト後の型)
というように使用します。
互換性がない型へのキャスト、例えば継承関係にないクラスへの変換やInteger→Doubleなど異なる型へのキャストを行おうとした場合、例外InvalidCastExceptionがスローされます。
Integer→Doubleなど異なる型への変換を行いたい場合はDirectCast演算子ではなくCType関数を使います。
DirectCast演算子でキャスト可能かどうかを事前に調べるにはTypeOf演算子を使います。 TypeOf演算子で型チェックを行った結果Trueとなった場合はキャスト可能なので、DirectCast演算子でその型に変換する際に例外がスローされることはありません。
TryCast演算子
TryCast演算子はVB8(VB2005)で導入された演算子で、DirectCast演算子に似たキャストを行うための演算子ですが、DirectCastとは動作が異なります。
DirectCastと同様TryCast(変数, キャスト後の型)
というように使用しますが、キャストできない場合でも例外がスローされることはありません。 代わりに、キャストできない場合にはTryCastはNothingを返します。 つまりTryCast演算子はある型へのキャストを試み、キャストできた場合はその型の値、できなかった場合はNothingを返します。
TryCast演算子を使う場合は、キャストできない場合でも例外はスローされないので事前にTypeOf演算子で型チェックを行う必要がなくなります。
なお、TryCast演算子は参照型にキャストする場合にのみ使用できます。 そのため構造体へのキャストなどには使うことはできません。 また、TryCast演算子はC#におけるas演算子に相当するものです。