引入原因:
在实际类型的判断和转换的时候,当接受不兼容的类型时,不想通过抛出异常来处理程序,可以采用其他的安全的方式进行处理。
使用用途:
is 运算符可以检查对象是否与特定的类型兼容,兼容意思是:对象是该指定的类型或者是该类型的派生类型【A is B】A是B的子类或者同类即为兼容。
as运算符用于执行引用类型的显示类型转换。如果要转换的类型与指定的类型兼容,转换就会成功进行;若不兼容,as运算符就返回null值。【A as B】A是B的子类或者同类即为兼容.
具体示例:
class IsAsDemo
{
static void Main(string[] args)
{
Plant plant = new Plant();
Flower flower = new Flower();
// is 运算符可以检查对象是否与特定的类型兼容,兼容意思是:对象是该指定的类型或者是该类型的派生类型
if (plant is Flower)
{
//此分支不会进去
((Flower)plant).GetName("lily");
}
Plant plantobj = plant as Plant;
if (plantobj == null)
{
Console.WriteLine("plant转换失败!");
}
else
{
//as运算符用于执行引用类型的显示类型转换,如果
plantobj.GetName("plant");
}
}
class Plant
{
public virtual void GetName(string name)
{
Console.WriteLine($"this plant name is a { name}");
}
}
class Flower : Plant
{
public override void GetName(string flowername)
{
Console.WriteLine($"this flower name is a {flowername}");
}
}