如果您有一个对象Foo
并将其传递给方法void Bar(object obj)
,并且在内部使用typeof(obj)
测试对象的类型,它将返回typeof为Foo或object ?
答案 0 :(得分:4)
您不能在obj
上使用typeof
,它仅适用于类型名称,不适用于实例。您需要使用obj.GetType()
,它将返回obj
的运行时类型。在您的情况下,它将返回与Foo
对应的Type
实例,假设obj
是Foo
的实例,而不是某个类型的实例派生自{{ 1}}。
答案 1 :(得分:3)
不,您需要使用obj.GetType()
。
typeof
用于获取类型的Type
对象,例如typeof(int)
,而Object.GetType
获取对象实例的Type
(运行时对象)。
答案 2 :(得分:0)
通常,typeof用于泛型类型。当您引用对象实例时,通常只需调用.GetType()
确保我理解你的问题......
var myFoo = new Foo();
Bar(myFoo);
....
void Bar(object myObject)
{
Type aType = myObject.getType(); // aType will equal typeof(Foo)