DirectCast 关键字引入类型转换操作。该关键字的使用方法与 CType 关键字相同,如下列所示:
Dim Q As Object = 2.37 ' Requires Option Strict to be Off. Dim I As Integer = CType(Q, Integer) ' Succeeds. Dim J As Integer =DirectCast(
Q, Integer)
' Fails.
这两个关键字都将要转换的表达式作为第一个参数,而将要转换成的类型作为第二个参数。如果未定义表达式的数据类型与第二个参数所指定的数据类型之间的转换,那么这两种转换都会失败。
这两个关键字之间的差别在于:只要定义了表达式与类型之间的有效转换,CType 即可成功,而 DirectCast 则要求对象变量的运行时类型与指定的类型相同。不过,如果表达式的指定类型和运行时类型相同,则 DirectCast 的运行时性能比 CType 的运行时性能好。
在上例中,Q
的运行时类型为 Double。CType 因为 Double 可以转换成 Integer 而成功了,DirectCast 则因为 Q
的运行时类型不是 Integer 而失败了。
如果参数类型不匹配,DirectCast 会引发 InvalidCastException 错误。