C# 在C语言中类型转换对象#

C# 在C语言中类型转换对象#,c#,C#,假设我有一个返回类a的对象的方法 A getItem(int索引) 现在我有下面一行代码,(我假设B是A的子类) bb=(B)对象获取项(i) 但在此之前,我必须确保我可以将其键入B,因为getItem可以返回A的其他子类的对象,比如C 像这样的 if(I can typecast obj.getItem(i) to B) { B b = (B) obj.getItem(i); } 我如何做到这一点?有两个选项: var item = obj.GetI

假设我有一个返回类a的对象的方法

A getItem(int索引)

现在我有下面一行代码,(我假设
B
A
的子类)

bb=(B)对象获取项(i)

但在此之前,我必须确保我可以将其键入
B
,因为
getItem
可以返回
A
的其他子类的对象,比如
C

像这样的

    if(I can typecast obj.getItem(i) to B) {
             B b = (B) obj.getItem(i);
    }
我如何做到这一点?

有两个选项:

var item = obj.GetItem(i);
if(item is B) {
   B b = (B) item;
}
object item = obj.getItem(i); // TODO: Fix method naming...
// Note: redundancy of check/cast
if (item is B)
{
    B b = (B) item;
    // Use b
}
或:


有关这两者之间更详细的比较,请参阅。

请改用
作为

B b = obj.getItem(i) as B;
if(b != null)
    // cast worked
as运算符类似于强制转换操作。但是,如果转换不可能,
as
返回
null
,而不是引发异常


尝试将
作为
关键字。看

这里有一个有用的链接:)
B b = obj.getItem(i) as B;
if(b != null)
    // cast worked
Base b = d as Base;
if (b != null)
{
   Console.WriteLine(b.ToString());
}