2014-06-17 35 views
0

我一直在學習C#約三個月。我正朝着ASP.NET MVC的方向發展,但現在我正處於現階段,我每天都在編寫代碼,只是儘可能地構建事物來強化這些基礎知識,而我正朝着更大的目標努力。這是我簡短的.NET體驗概述。使用Struct或Enum分類快餐檯控制檯應用的調味品

該應用程序將允許用戶從預定義食品菜單中進行選擇,當然也可以下訂單並提供食品。我設計了一個定義產品的類,該產品實現了一個食品界面,該界面定義了食品必須具備的條件,以及飲料必須具有的另一個界面。有些產品的類別可以分成更多特定的漢堡包,薯條,沙拉等,我想你會看到這一點。數據訪問僅僅是POCO ..所以無論如何,當使用提供食物的方法時,用戶必須能夠指定他們是否需要調味品,然後程序將根據該決定來決定下一步該做什麼。我應該使用一個結構或枚舉:

public enum Condiments 
     { 
     Mayonaise, 
     Mustard, 
     Ketchup, 
     Secret Sauce, 


     } 

真的只是困惑於如何把調味品作爲選項,而無需創建屬性或其他類。所以我可以簡單地說一下,只是說問......「你會怎麼做?」

回答

0

您可以使用Enum.GetNames(typeof(Condiments))來獲取調味品名稱數組並將該列表呈現給用戶。

+0

而這就是你如何顯示數組的內容?或者這只是獲取數據,現在你必須做一些其他的事情來顯示給控制檯中的用戶? – DtechNet

1

只是困惑於如何把調味品作爲選項,而無需創建屬性或其他類

我會給該搜索和其它查詢類。對它們進行硬編碼意味着將來如果您需要添加新項目,則必須重新構建並重新部署。爲了避免這種情況,我寧願在數據庫和POCO類中創建一個查找表。然後將它們加載到緩存中並將它們綁定到適當的源。

如果你仍然想硬編碼它們,你可以這樣做

Yourobject.DataSource = Enum.GetValues(typeof(Condiments)); 
+0

「對它們進行硬編碼意味着將來如果您需要添加新項目,您將不得不重新構建和重新部署。」阿門。枚舉(尤其是標誌式枚舉)只能用於面向程序的事物,而不能用於用戶導向的事物。 – RenniePet

0

的結合,我建議你使用一個枚舉,具有標誌屬性。這將允許您將多個選擇合併爲一個值。在下面的示例中,Mustard & SecretSauce是通過將這兩個值「或(ORing)」在一起來選擇的。即使進行了多項選擇,也可以使用HasFlag()方法來檢查是否進行了特定選擇。

using System; 

public class Program 
{ 
    public static void Main() 
    { 
     // Choose Mustard & SecretSauce 
     Condiments selected = Condiments.Mustard | Condiments.SecretSauce; 

     Console.WriteLine(selected); 


     // Is SecretSauce selected 
     bool has = selected.HasFlag(Condiments.SecretSauce); 

     Console.WriteLine(has); 

    } 
} 

[Flags] 
public enum Condiments 
{ 
    Mayonaise = 0x01, 
    Mustard = 0x02, 
    Ketchup = 0x04, 
    SecretSauce = 0x08, 
} 

有關FlasAttribute更多信息請查看:http://msdn.microsoft.com/en-us/library/system.flagsattribute.aspx

+0

非常感謝。 – DtechNet