即使对象的当前值为null,是否有更好的方法来确定对象的基础类型?
当someObject确实是字符串类型但当前保持null
值时,以下代码不起作用。
public void doWork(object someObject)
{
var objAsString = someObject as string;
if (objAsString != null)
{
// do work, return
// work involves string specific logging/manupulation
}
var objAsByteArr = someObject as byte[];
if (objAsByteArr != null)
{
// do work, return
// work involves byte specific logging/manupulation
}
throw new Exception("Unknown type encountered");
}
答案 0 :(得分:3)
无法做到这一点:null
对象引用没有与之关联的类型。可以说,这应该无关紧要:恰好是string
的{{1}}的处理与null
恰好是byte[]
的处理不同。
null
如果你需要知道类型,你应该手动传递类型,或者使用泛型类型参数来静态地确定它(即在编译时)。