as 与 is

    class Program
    {
        static void Main(string[] args)
        {
            Father f = new Father();
            Son s = new Son();
            if (f is Son)//这里为false;is就是处于对类型的判断。返回true和false。如果一个对象是某个类型或是其父类型的话就返回为true,否则的话就会返回为false。另外is操作符永远不会抛出异常;
//上面代码中,其实clr对对象类型检查了两次:is操作首先检查f所引用的对象是否和Son类型兼容。如果兼容,那么在if语句内clr在执行转换时又会检查f是否为一个Son引用。
{ s = (Son)f; //f不一定包含s,所以不能这样转换 } else { s = null; } s = f as Son; //as 是把一种类别转换为指定的引用类型,转换不成功则返回nullif (s == null) { Console.WriteLine("as类型先检查强制类型转换的有效性,如果有效,则执行强类型转换过程。否则返回null"); } Console.ReadKey(); } } class Father { } class Son : Father { }

posted on 2013-03-04 23:18  potoofly  阅读(351)  评论(0编辑  收藏  举报