黑马程序员技术交流社区

标题: c#中的类型转换 [打印本页]

作者: 陈辉    时间: 2012-11-15 12:14
标题: c#中的类型转换
1、定义两个类:
internal class B
{
}

internal class D:B
{
}

2、举例说明类型转换(用yes表示是成功编译和执行,还是造成编译时错误,还是造成运行时错误 ):
语句                                                     成功编译和执行             造成编译时错误           造成运行时错误                       错误分析
Object o1=new Object();                             yes
Object o2=new B();                                        yes
Object o3=new D();                                       yes
Object o4=o3 ;                                              yes
B b1=new B();                                                yes
B b2=new D();                                               yes
D d1=new D();                                               yes
B b3=new Object();                                                                          yes                                                                             等号前是B类型的变量,而等号后需要一个Object类型的变量
D d2=new Object();                                                                          yes                                                                                 同上
B b4=d1;                                                      yes
D d3=b2;                                                                                         yes                                                                            d3是D类型的变量,b2是B类型的变量         
D d4=(D)d1;                                                yes
D d5=(D)b2;                                                  yes
D d6=(D)b1;                                                                                                                              yes                                 d6是D类型的变量,而b1指向了B对象,D类型的变量不能引用B                  
                                                                                                                                                                                          对象               
B b5=(B)o1;                                                                                                                                 yes                                 同上
B b6=b2;                                                     yes

3、总结:
前提条件:两个类型要想能互相转换,两个类之间必须有几成关系。
      1、等号前面的引用变量和等号后面的引用变量的类型相同(例如:B b4=d1、D d4=(D)d1  ),否则编译错误(例如:D d3=b2 )
      2、等号前面的引用变量和等号后面的引用变量所指向的对象类型相同(例如:B b6=b2 、Object o2=new B() ),否则运行时错误(例如:D d6=(D)b1 )
同时满足上面两个条件,才能成功编译和执行 。

上述是个人观点,如有错误,还请大家指正。




















作者: 许庭洲    时间: 2012-11-15 21:54
值得学习ing!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2