假设我有一个返回A类对象的方法
A getItem(int index)
现在我有以下代码行,(我假设B是子类A)
B b = (B) obj.getItem(i);
但是在这之前我必须确保我可以强制转换成B作为getItem可以返回一些其他子类的对象,说C的A
像这样的东西
if(I can typecast obj.getItem(i) to B) {
B b = (B) obj.getItem(i);
}
Run Code Online (Sandbox Code Playgroud)
我怎么能这样做?
两种选择:
object item = obj.getItem(i); // TODO: Fix method naming...
// Note: redundancy of check/cast
if (item is B)
{
B b = (B) item;
// Use b
}
Run Code Online (Sandbox Code Playgroud)
要么:
object item = obj.getItem(i); // TODO: Fix method naming...
B b = item as B;
if (item != null)
{
// Use b
}
Run Code Online (Sandbox Code Playgroud)
有关两者之间更详细的比较,请参阅"在CLR中使用'as'关键字进行转换和使用'.