3、放在is、as操作符的恩怨情仇上了。类型转换将是个较大的话题,留于适当的时机讨论。is/as操作符,是C#中用于类型转换的,提供了对类型兼容性的判断,从而使得类型转换控制在安全的范畴,提供了灵活的类型转换控制。is的规则如下:·检查对象类型的兼容性,并返回结果,true或者false;·不会抛出异常;·如果对象为null,则返回值永远为false。其典型用法为: 1object o = new object(); 2 3class A 4 5{ 6 7} 8 9if (o is A) //执行第
4、一次类型兼容检查1011{1213 A a = (A) o; //执行第二次类型兼容检查1415}1617 as的规则如下:·检查对象类型的兼容性,并返回结果,如果不兼容就返回null;·不会抛出异常;·如果结果判断为空,则强制执行类型转换将抛出NullReferenceException异常。其典型用法为: 1object o = new object(); 2 3class B 4 5{ 6 7} 8 9B b = o as B; //执行一次类型兼容检查1011if (b != nu
5、ll)1213{ 1415 MessageBox.Show("b is B's instance.");1617}18194.结论纵上比较,is/as操作符,提供了更加灵活的类型转型方式,但是as操作符在执行效率上更胜一筹,我们在实际的编程中应该体会其异同,酌情量才。 第二回:对抽象编程:接口和抽象类本文将介绍以下内容:•面向对象思想:多态•接口•抽象类 1. 引言在我之前的一篇post《抽象类和接口的谁是谁非》中,和同事管伟的讨论,得到很多朋友的关注,因为是不成体系的论道,所以给大家了解造成
7、义方法为: public interface System.IComparable { int CompareTo(object o); } public class TestCls: IComparable { public TestCls() { } private int _value; public int Value {get { return _value; }set { _value = value; } } public int CompareTo(objec
8、t o) {//使用as模式进行转型判断TestCls aCls = o as TestCls;if (aCls != null){//实现抽象方法return _value.CompareTo(aCls._value);} } }·什么是抽象类?抽象类提供多个派生类共享基类的公共定义,它既可以提供抽象方法,也可以提供非抽象方法。抽象类不能实例化,必须通过继承由派生类实现其抽象方法,因此对抽象类不能使用new关键字,也不能被密封。如果派生类没有实现所有的抽象方法,则该派生类也必