是的,因为这是一个强制转换,但你没有定义转换的方法。 如果想要 D d6 = (D) b1; 这句话能够正常运行,则需要在Class D中重载如下运算: internal class D:B { public static explicit operator D(B b) //这是一个显式转换 { //具体转换方法 }
成都创新互联专注于秦淮企业网站建设,响应式网站设计,购物商城网站建设。秦淮网站建设公司,为秦淮等地区提供建站服务。全流程按需定制网站,专业设计,全程项目跟踪,成都创新互联专业和态度为您提供的服务
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#灵活得多
第一 不清楚vb.net
第二 是的2*0.2=0.4 会取最大精度
第三 label1.Text = 3 这里的3在c#里是数字 如果要写成字符串 label1.Text = "3"; label1.Text 的属性是字符串类型。。所以你不能赋值 整形类型的
第四 label1.Text= a.toString 你缺少了() label1.Text= a.toString();
label1.Text =Convert.toString(a); 转换成字符串
Cint(TextBox1.Text) '转换为Integer
Cdbl(TextBox1.Text) '转换为Double