由于对象是多态的,因此基类类型的变量可以保存派生类型. 若要访问派生类型的方法,需要将值强制转换回该派生类型. 不过,在这些情况下,如果只尝试进行简单的强制转换,会导致引发 InvalidCastException 的风险. 这就是 C# 提供 is 和 as 运算符的原因. 您可以使用这两个运算符来测试强制转换是否会成功,而没有引发异常的风险. 通常,as 运算符更高效一些,因为如果可以成功进行强制转换,它会实际返回强制转换值. 而 is 运算符只返回一个布尔值. 因此,如果只想确定对象的类型