2014-11-04 1773 views
-1

我正在嘗試創建菜單系統,並且一旦它們已被訪問,我就將菜單存儲在堆棧中。我試圖使用Stack.Peek()來基本上說:如果menuName = menuStack.Peek,然後繼續。如何讀取stack.peek以將其放入if語句C#

菜單有一個drawRectangle,sprite和Menuname枚舉與它們相關聯,所有菜單都是Menu類的子類。

public static void GoToMenu(MenuName menuName) 
    { 
     Stack<Menu> menuStack = new Stack<Menu>(); 
     Stack<Menu> tempStack = new Stack<Menu>(); 
     if(menuStack.Peek() = MainMenu){ 

     } 
    } 

或多或少,如果menuStack.Peek返回一個mainMenu對象。我如何檢查?

我只是真的不知道如何閱讀menuStack.Peek()。我不知道如何將它應用到if語句來檢查它是否等於mainmenu對象,pausemenu對象或其他。

+3

好了,什麼是你的問題/問題? – Servy 2014-11-04 19:12:51

+0

如果(menuStack.Peek()= MainMenu)不能編譯,我需要能夠使用堆棧函數peek pop和push來遍歷這些列表,並且我從來沒有使用過一個對象做過堆棧。 – user1801067 2014-11-04 19:14:08

+2

試試'=='而不是'='。 – Blorgbeard 2014-11-04 19:14:24

回答

1
public static void GoToMenu(MenuName menuName) 
    { 
     Stack<Menu> menuStack = new Stack<Menu>(); 
     Stack<Menu> tempStack = new Stack<Menu>(); 
     if(menuStack.Peek().Name == menuName){ 
      menuStack.Pop(); 
     } 
    } 

這就是我需要

+0

這是你如何確定一個對象是否是一個類型的實例。這只是您可以比較對象的無數可能方式之一,並且可以在「if」語句內部或外部完成。 – Servy 2014-11-04 19:22:22

+0

所以另一個快速的問題,使用我能夠檢查我的堆棧上的頂部對象是否爲MainMenu類型,但我如何檢查所有菜單,但如果他們有字段MenuName = mainMenu?記得我有mainmenu,難道菜單,暫停菜單 – user1801067 2014-11-04 19:23:27

+0

nvm的所有子類,找到了=) – user1801067 2014-11-04 19:24:48