与继承有关的运算符
public void WorkWithManyDifferentObjects(object o)
{
IBankAccount account = (IBankAccount)o;
// work with the account
}
只要总是给这个方法提供一个IBankAccount类型的对象,
当然,如果接受一个object类型的对象,有时就会传递无效的对象。
此时会得到InvalidCastException异常。
在正常情况下接受异常从来都不好。此时应使用is和as运算符。
在类层次结构内部的类型转换,不会抛出基于类型转换的异常,且使用is和as运算符都是可行的。
is
使用is运算符。is运算符根据条件是否满足,对象是否使用指定的类型,返回true或false。
验证条件是true后,可以进行类型转换。
public void WorkWithManyDifferentObjects(object o)
{
if (o is IBankAccount)
{
IBankAccount account = (IBankAccount)o;
// work with the account
}
}
as
as运算符的工作原理类似于类层次结构中的cast运算符——它返回对象的引用。
它从不抛出InvalidCastException异常。相反,如果对象不是所要求的类型,这个运算符就返回null。
public void WorkWithManyDifferentObjects(object o)
{
IBankAccount account = o as IBankAccount;
if (account ! = null)
{
// work with the account
}
}