确定 C# 中当前值为 null 时的对象类型
本文关键字:null 对象 类型 确定 | 更新日期: 2023-09-27 18:37:05
有
没有更好的方法来确定对象的底层类型,即使对象的当前值为空?
当 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");
}
没有办法做到这一点:null
对象引用没有与之关联的类型。可以说,这无关紧要:处理碰巧null
string
与处理恰好null
byte[]
没有区别。
// Add this check upfront
if (someObject == null) {
// do work for null, return
}
// Then continue with your existing code:
var objAsString = someObject as string;
if (objAsString != null)
{
// do work, return
}
var objAsByteArr = someObject as byte[];
if (objAsByteArr != null)
{
// do work, return
}
throw new Exception("Unknown type encountered");
如果需要知道类型,则应手动传递类型,或使用泛型类型参数静态确定它(即在编译时)。