2011-11-10 53 views
3

我已經聲明瞭一個枚舉類型, 爲它分配了一個變量 ,現在我正在將它寫入控制檯。 那麼枚舉類型在真實世界的應用程序中有什麼用處?我會用Enum做什麼?

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace ConsoleApplication1 
{ 
    class Enum 
{ 
    enum cars 
    { 
     Toyota, Nissan, Ferrari, Lamborghini 
    } 
} 
class Program 
{ 
    enum cars 
    { 
     Toyota, Nissan, Ferrari, Lamborghini 
    } 
    static void Main(string[] args) 
    { 
     int a = (int)cars.Ferrari; 
     Console.WriteLine(a); 
    } 
} 
} 
+2

參見例如這個問題:http://stackoverflow.com/questions/4709175/why-and-what-for-java-enum/4709224#4709224這是關於在Java中的枚舉,但同樣的原則適用於C#。 – sleske

+2

如果你碰巧使用過魔法字符串,那麼Enum是正確的。 –

回答

10

每當過程接受一組有限的變量時,請考慮使用枚舉。枚舉使代碼更加清晰易讀,特別是在使用有意義的名稱時。

使用枚舉的優點包括:

  • 降低由調換或錯誤輸入號碼錯誤。

  • 可以很容易地改變未來的價值。

  • 使代碼更容易閱讀,這意味着錯誤 將不太可能會進入它。

  • 確保向前兼容。使用枚舉,如果將來有人更改與成員名稱對應的值 ,那麼代碼可能會更少,失敗 可能會失敗。

裁判:MSDN

2

您想要在程序中使用枚舉值來提高代碼清晰度並使其更易於維護。枚舉提供更好的錯誤檢查和編譯器警告。它們存儲常量和重要的值。檢查Enums以獲得更好的說明。

編輯:

  • 枚舉可以智能感知現實世界 應用程序可以使用Visual Studio中。
  • 當您希望能夠在恆定值的集合 和與 號碼相關的每個可能值之間進行選擇時,它們就派上用場了,它們可以用於各種各樣的情況。
  • 枚舉類型爲 提供了一種有效的方法來定義可以將 分配給變量的一組命名積分常量。
2
enum cars 
{ 
    Toyota, Nissan, Ferrari, Lamborghini 
} 

這不是最好的例子,因爲有更多的方式各類汽車比,以及新的汽車製造商經常彈出,如小小的定製商店。

我會用Enum做什麼?

您可以將它用於具有多次選擇的事物,但這些選擇是離散的,並且不會改變(經常)。

你會在可能需要string的地方使用它,但你不想只接受任何字符串。

喜歡的東西:

public enum DayOfWeek 
{ 
    Monday, 
    Tuesday, 
    Wednesday, 
    Thursday, 
    Friday, 
    Saturday, 
    Sunday, 
}; 

public void ScheduleRecurringAppointment(DayOfWeek day) 
{ 
    // Todo: Add appointment to DB here... 
} 

(注意,這是不是你應該自己寫一個枚舉有one in the .Net framework already)。

可以更改枚舉,但它是痛苦的,因爲你必須重新編譯所有使用枚舉的代碼。

1

這很可能是更爲有用:

public enum Transmission { 
    Manual, 
    Automatic, 
    SemiAutomatic 
} 

public class Car 
{ 
    public Transmission CarTransmission { get; set; } 
} 
0

以下是使用enum的優點:

  1. 您明確指定的客戶端代碼值有效的 變量。

  2. 在Visual Studio,智能感知列出定義的值。

0

你可以使用你的枚舉類型的變量。他們將只接受枚舉值,這讓編碼更容易(我認爲)

例如:

Enum Cars { VW, Mercedes, Ford, Opel }; 

... 

Cars myCar = Cars.VW; 
0

枚舉是代碼的可讀性,並且可以使用的類型限制的有限集合值。

一個常見用途枚舉的是在業務流程國家建模 - 即新的國家不能在臨時基礎上增加,並且將需要進一步的編碼和測試。

2

一兩件事,沒有人指出,但(除非我錯過了它)是利用Enumeration Types設置位標誌。您可以對枚舉值和按位比較進行按位運算(例如&|)。這適用於FlagsAttribute屬性。

[Flags] 
enum Days 
{ 
    None = 0x0, 
    Sunday = 0x1, 
    Monday = 0x2, 
    Tuesday = 0x4, 
    Wednesday = 0x8, 
    Thursday = 0x10, 
    Friday = 0x20, 
    Saturday = 0x40 
} 

class MyClass 
{ 
    Days meetingDays = Days.Tuesday | Days.Thursday; 
} 
0

繼承人一個在asp.net中使用枚舉來更改每列的標題文本的示例。我使用枚舉來指定我想改變的gridview中哪一列的索引。

private enum MENU_ITEM 
{ 
    Customer_ID = 0, 
    Customer_First_Name = 1, 
    Customer_Surname = 2, 
    Customer_DOB = 3, 
    Customer_Phone_Number = 4, 
    Customer_Email = 5, 
    Customer_Update = 6, 
    Customer_Delete = 7, 
    Customer_Transaction = 8 
} 

private void populateGridHeader() 
{ 
    SearchCustomer_g.Columns[(int)MENU_ITEM.Customer_ID].Visible = false; 
    SearchCustomer_g.Columns[(int)MENU_ITEM.Customer_First_Name].HeaderText = "First Name"; 
    SearchCustomer_g.Columns[(int)MENU_ITEM.Customer_Surname].HeaderText = "Surname"; 
    SearchCustomer_g.Columns[(int)MENU_ITEM.Customer_DOB].HeaderText = "Date of Birth"; 
    SearchCustomer_g.Columns[(int)MENU_ITEM.Customer_Phone_Number].HeaderText = "Phone Number"; 
    SearchCustomer_g.Columns[(int)MENU_ITEM.Customer_Email].HeaderText = "Email"; 
    SearchCustomer_g.Columns[(int)MENU_ITEM.Customer_Transaction].HeaderText = "New Transaction"; 
} 
相關問題