【发布时间】:2011-11-03 12:23:02
【问题描述】:
我在一些调试过程中遇到了这段代码。
private bool HasBaseType(Type type, out Type baseType)
{
Type originalType = type.GetType();
baseType = GetBaseType(type);
return baseType != originalType;
}
我最初的想法是,方法的第一行中的type.GetType() 总是会产生与typeof(System.Type) 等效的结果,这在上下文中对我来说似乎毫无意义。但是,MSDN suggests 即 Type 会覆盖将继承自 Object 的 GetType() 的版本。然后,actual MSDN page on non-static Type.GetType()(不要与三个静态版本混淆)表示GetType() 方法返回“当前类型”。没有给出进一步的相关解释。
那么,上述方法中originalType的值是等于type还是等于typeof(System.Type)?从文档中我不太确定。如果originalType 等价于type,它是否是type 的副本,因此,如果GetBaseType 方法改变其参数,originalType 仍将等价于@987654339无论GetBaseType 内部发生什么,@ 都保持其原始形式?
【问题讨论】:
-
private bool HasBaseType(Object instance, out Type baseType)
-
如果你想要的只是基本类型,为什么不直接使用 Type.BaseType 属性呢?
-
@tkeE2036 这段代码不是我写的;我只是在调试时发现它。而且,相信我,还有很多(可悲的)很多这是从哪里来的。