我在一些調試過程中遇到了這段代碼。GetType()在Type的實例上返回什麼?
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
仍然相當於type
在其原來的形式,無論內GetBaseType
會發生什麼?
私人布爾HasBaseType(對象實例,從類型BASETYPE) – BLUEPIXY
如果你想要的是基本型,爲什麼不直接使用Type.BaseType財產? –
@ tkeE2036我沒寫這段代碼;我在調試時發現它。而且,相信我,還有(可悲的)更多來自哪裏。 – Andrew