扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
这属于装箱拆箱。我举个例子你就明白了:
成都创新互联公司于2013年开始,公司以网站建设、成都做网站、系统开发、网络推广、文化传媒、企业宣传、平面广告设计等为主要业务,适用行业近百种。服务企业客户成百上千家,涉及国内多个省份客户。拥有多年网站建设开发经验。为企业提供专业的网站建设、创意设计、宣传推广等服务。 通过专业的设计、独特的风格,为不同客户提供各种风格的特色服务。
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#灵活得多
转换错误时可以加Try语句实现容错自动处理。
Dim a As Date
Try
a = DateTime.Parse(TextBox1.Text)
Catch
a = DateTime.Parse(Now)
End Try
Dim t As String
t = Choose(Weekday(a), "日", "一", "二", "三", "四", "五", "六")
Label2.Text = "今天是:星期" t
Dim txt As TextBox = CType(ctrl, TextBox)
当然也可以用directcast方法,实现的功能一样,trycast可以避免类型不符的时候不报错的功能。
完全不相的类型之间则是不能转换的,比如你的ctrl里实际上是一个button,那么无论如何都不可能给你转换成textbox,用上面的方法的话会抛出一个异常。
强制类型转换在VB.NET中用Ctype()函数实现的。
Dim drv As DataRowView = CType(comboBox1.SelectedItem, DataRowView)
另外:comboBox1.SelectedItem 不是 string 类型,而是 object 类型。ComboBox 下拉显示文字是通过调用 Object.ToString() 方法实现的。
是的,因为这是一个强制转换,但你没有定义转换的方法。 如果想要 D d6 = (D) b1; 这句话能够正常运行,则需要在Class D中重载如下运算: internal class D:B { public static explicit operator D(B b) //这是一个显式转换 { //具体转换方法 }
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流