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 是把一种类别转换为指定的引用类型,转换不成功则返回null;
if (s == null)
{
Console.WriteLine("as类型先检查强制类型转换的有效性,如果有效,则执行强类型转换过程。否则返回null");
}
Console.ReadKey();
}
}
class Father { }
class Son : Father { }