2009-06-01 58 views
2

假設我有超類A以及從A繼承的子類A1和A2,如何在下面的代碼中獲取變量的子類型?找出聲明爲超類的實例的子類型

A _a1 = new A1(); 
A _a2 = new A2(); 
// Need type of A1 and A2 given the variables _a1 and _a2. 

而且,如果我有一個小類A2_1是A2的sublcass,我如何才能給出下面的代碼最低的子類型?

A _a2_1 = new A2_1(); 

編輯:謝謝你的答案。什麼是噓聲。過度思考問題,甚至沒有嘗試過GetType()。 =/

回答

5

Console.WriteLine(_a1.GetType());

的GetType可以不管返回聲明類型的變量的運行時類型。

1

對於第一個 - 只需使用_a1.GetType()_a2.GetType()。 2日 - 「最低分類型」是什麼意思;或:什麼回答你預計 ...(這可能有助於我們理解你的意思......)

2

你可以使用的GetType()方法:在任何

Type type = _a1.GetType(); 
Type subtype = _a2_1.GetType(); 
1

的GetType()對象總是給你真實的對象類型,決不會是超類的類型。如果使用「new subclass()」創建子類的實例,那麼「subclass」是該對象的類型。

調用GetType()是你所需要的所有情況。