-5

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

4

3 回答 3

4

您不能使用typeofon obj,它仅用于类型名称,而不是实例。您需要使用obj.GetType(),它将返回运行时类型obj. 在您的情况下,它将返回Type对应于Foo假设obj的实例,Foo而不是派生自的某种类型的实例Foo

于 2013-06-17T14:13:16.103 回答
3

不,您需要使用obj.GetType().

typeof用于获取Type类型的对象,例如typeof(int),而Object.GetType获取Type对象实例(运行时对象)的 。

于 2013-06-17T14:12:36.297 回答
0

通常,typeof 用于泛型类型。当您引用对象实例时,通常只需调用 .GetType()

为了确保我理解你的问题...

var myFoo = new Foo();
Bar(myFoo);

....

void Bar(object myObject)
{
   Type aType = myObject.getType(); // aType will equal typeof(Foo)
于 2013-06-17T14:16:08.227 回答