C# 在C语言中类型转换对象#
假设我有一个返回类a的对象的方法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 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());
}