将对象传递给方法时获取对象的类型

时间:2013-06-17 14:10:43

标签: c# object methods

如果您有一个对象Foo并将其传递给方法void Bar(object obj),并且在内部使用typeof(obj)测试对象的类型,它将返回typeof为Foo或object ?

3 个答案:

答案 0 :(得分:4)

您不能在obj上使用typeof,它仅适用于类型名称,不适用于实例。您需要使用obj.GetType(),它将返回obj的运行时类型。在您的情况下,它将返回与Foo对应的Type实例,假设objFoo的实例,而不是某个类型的实例派生自{{ 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)