当C#中的值当前为null时,确定对象的类型?

时间:2013-10-27 16:30:31

标签: c#

即使对象的当前值为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");
}

1 个答案:

答案 0 :(得分:3)

无法做到这一点:null对象引用没有与之关联的类型。可以说,这应该无关紧要:恰好是string的{​​{1}}的处理与null恰好是byte[]的处理不同。

null

如果你需要知道类型,你应该手动传递类型,或者使用泛型类型参数来静态地确定它(即在编译时)。