如果您有一个对象Foo
并将其传递给一个方法void Bar(object obj)
,并在内部使用它来测试对象的类型,typeof(obj)
它将返回 typeof 为 Foo 还是对象?
问问题
59 次
3 回答
4
您不能使用typeof
on 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 回答