重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Dim txt As TextBox = CType(ctrl, TextBox)
创新互联公司专注于灯塔网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供灯塔营销型网站建设,灯塔网站制作、灯塔网页设计、灯塔网站官网定制、重庆小程序开发服务,打造灯塔网络公司原创品牌,更为您提供灯塔网站排名全网营销落地服务。
当然也可以用directcast方法,实现的功能一样,trycast可以避免类型不符的时候不报错的功能。
完全不相的类型之间则是不能转换的,比如你的ctrl里实际上是一个button,那么无论如何都不可能给你转换成textbox,用上面的方法的话会抛出一个异常。
CType 函数
任何数据类型
必须在两种数据类型之间定义扩大转换或收缩转换
引发 InvalidCastException
DirectCast
任何数据类型
一个类型必须继承自或者实现另一个类型
引发 InvalidCastException
TryCast
仅引用类型
一个类型必须继承或者实现另一个类型
返回 Nothing (Visual Basic)
这属于装箱拆箱。我举个例子你就明白了:
Dim x As Integer = 5
Dim o As Object = x '装箱
Dim y As Integer = CType(o, Integer) '拆箱(在Option Strict Off的情况下,直接用o给y赋值,会发生自动转换,也就是说在这种情况下,你不必显式调用CType函数)
另外:VB.NET支持后期绑定,所以你也可以不进行拆箱,直接在Object类型下就可以调用它的属性和方法
比如,下面的语句在Option Strict Off是是合法的
Dim s As String = 886
Dim i As Integer = "53"
Dim f As Object = New Form()
f.Show() '注意,f是Object类型的
总之,VB.NET的语法要比C#灵活得多
返回表达式显式地转换为指定数据类型、对象、结构、类或接口后的结果。
CType(expression, typename)各部分说明expression任何有效的表达式。如果 expression 的值超出了 typename 所允许的范围,将会出现错误。
typename任何在 Dim 语句的 AS 子句内合法的表达式,即任何数据类型、对象、结构、类或接口的名称。
备注CType 采用内联方式编译,即转换代码是计算表达式的代码的一部分。因为不需要调用完成转换的过程,因此执行速度更快。
示例本示例使用 CType 函数将表达式转换为指定的数据类型。
Cint(TextBox1.Text) '转换为Integer
Cdbl(TextBox1.Text) '转换为Double