2014-04-15 157 views
0

我只是想知道檢查對象類型的東西的過程是什麼。c#如何檢查對象是否屬於某種類型

基本上我有一個父對象的數組,我想檢查這些對象之一是否是一個特定的子類型。

更具體地說,我想檢查一個GameScreen對象數組是否包含GameplayScreen類型的GameScreen對象。

 GameScreen[] screens = mScreenManager.GetScreens(); 

     // loop through array and check if the object equals gameplayscreen 


     } 
+2

這幾乎總是做錯事。如果您將要收集父對象的集合,則父類型應具有您需要用於此集合中每個對象的任何成員。您應該依賴多態性,以便每個項目都可以正確執行*,而無需知道其類型*。 – Servy

回答

5

您可以檢查使用is operator喜歡的類型:

if(screens[0] is GamePlayScreen) 

或者,如果你只是需要從你的陣列GamePlayScreen類型的對象,你可以使用:

GamePlayScreen[] items = screens.OfType<GamePlayScreen>().ToArray(); 

參見:Enumerable.OfType。它使用System.Linq

+0

是否有可能在GameScreens類型的數組GamePlayScreen類型coud中存在,我無法理解你的邏輯,請如果你給我解釋它 –

+0

好吧,我已經知道它的孩子和父類 –

+0

@EhsanSajjad,你說得對: ) – Habib

1

當您要檢查類型時,使用is關鍵字。

class Foo {} 
class SuperFoo : Foo {} 

bool IsSuperFoo(Foo foo) 
{ 
    if (Foo is SuperFoo) return true; 
    return false; 
} 

您可以對您的GamePlayScreen執行相同操作。

相關問題