举个例子说明一下吧.
System.IO.FileInfo fi = new System.IO.FileInfo(path);
System.IO.FileSystemInfo fsi = (FileSystemInfo)fi;这种类的转换是仅限于派生类转换成父类.还是达成某一条件就可以转换,这种转换可逆吗?即父类转成派生类.这种转换内部是怎么进行的??
System.IO.FileInfo fi = new System.IO.FileInfo(path);
System.IO.FileSystemInfo fsi = (FileSystemInfo)fi;这种类的转换是仅限于派生类转换成父类.还是达成某一条件就可以转换,这种转换可逆吗?即父类转成派生类.这种转换内部是怎么进行的??
解决方案 »
- 序列化Exception类的实例时出错,高手快来帮忙看看。
- DropDownList 宽度设置奇怪的现象,在线等,谢谢!
- asp.net动态生成控件问题
- 如何查询一张表的字段名?
- 在asp.net 下如何实现视频,
- javascript如何使一个Button服务器控件的Enbile为False?
- 关于Timer控件刷新页面的问题
- 请教一个问题!
- 为什么错误显示:“validatetraveldata”不是“ASP.travel_aspx”的成员
- 斑竹,为什么我的帖子你不分清红皂白就移到“非技术区”?而且,你移的帖子,却反而扣我的信誉分?????!!!!
- 弹出对话框问题。
- javascript向后台传值的问题
在系统内部,对象通过引用来使用,比如在你的代码中 System.IO.FileInfo fi = new System.IO.FileInfo(path); fi 即一个指向对象的引用。同样在 System.IO.FileSystemInfo fsi = (FileSystemInfo)fi; 中,fsi 也是一个指向对象的引用。指向子类对象的引用通过强制转换,可以做为父类对象的引用来使用。举例来说,狗是父类,黑狗是子类,我们可以把黑狗叫作狗。
但是指向父类对象的引用不可以转换为指向子类的引用。比如说,你不能将狗叫作黑狗,因为不是所有的狗都是黑狗。类型的转换主要有两种方式:一种通过在引用前面加 ( 类型 ) 来进行强制转换,如:
System.IO.FileSystemInfo fsi = (FileSystemInfo)fi;
如果 fi 不可以转换为 FileSystemInfo,系统会抛出异常。第二种通过 as 进行转换
System.IO.FileSystemInfo fsi = fi as FileSystemInfo;
如果 fi 不可以转换为 FileSystemInfo, fsi 为 null, 系统不会抛出异常。