【泛型和强制类型转换】
编译器允许您将一般类型参数显式强制转换到其他任何接口,但不能将其转换到类:
但是,您可以使用临时的 Object 变量,将一般类型参数强制转换到其他任何类型:
不用说,这样的显式强制类型转换是危险的,因为如果为取代一般类型参数而使用的类型实参不是派生自您要显式强制转换到的类型,则可能在运行时引发异常。要想不冒引发强制类型转换异常的危险,一种更好的办法是使用 is 和 as 运算符,如代码块 6 所示。如果一般类型参数的类型是所查询的类型,则 is 运算符返回 true;如果这些类型兼容,则 as 将执行强制类型转换,否则将返回 null。您可以对一般类型参数以及带有特定类型实参的一般类使用 is 和 as。
参考:http://msdn.microsoft.com/zh-cn/library/ms379564(VS.80).aspx