2016-07-26 169 views
0

我目前正在研究一個利用相當數量的枚舉的C#程序。它的組織方式使得一個類包含許多枚舉,並且有幾個這樣的類。然而,一對夫婦枚舉兩者之間相同的 - 用於組織的目的,這將是很好,有一種「SharedEnums」類,然後做這樣的事情:將枚舉設置爲C#類中的另一個枚舉

public class FirstEnumCollection { 
    public enum Fruits = SharedEnums.Fruits; 
    //insert non-shared enums here 
} 

public class FirstEnumCollection { 
    public enum Fruits = SharedEnums.Fruits; 
    //insert non-shared enums here 
} 

public class SharedEnums { 
    public enum Fruits { 
     Apple, 
     Pear 
    } 
} 

這樣一來,我們贏了」 t在類之間多次聲明相同的枚舉,並且更改共享枚舉將更改這兩個類中的枚舉。我已經嘗試了幾個我的例子的變體,但沒有運氣,我相當肯定它不能完成,但想要確認。

+5

爲什麼不直接使用它? – SLaks

+0

你甚至不需要把枚舉放在一個類中 –

回答

5

enum不需要「屬於」一個類。您可以在任何課程外申報:

public enum Fruits { 
    Apple, 
    Pear 
} 

然後在任何課程中使用它。

+0

這個類的目的是成爲一個組織工具而不是任何東西 - 所有的枚舉都在一些'MyEnums'命名空間中聲明,每個類代表枚舉的地方在應用程序中使用(我在這裏簡化了名稱)。所以這個枚舉永遠不會直接在'FirstEnumCollection'中使用,而是被其他類使用。 – lionheartdamacy

+0

在這種情況下,不需要使用類作爲名稱空間。這對於常量而不是枚舉是必要的。命名空間主要是爲了這個目的而存在的。但主要是當你有兩個具有相同名稱的實體時,它們會消除歧義。但是,如果你有兩個相同的枚舉,並且你想設置一個與另一個相同的枚舉,則不需要它。這只是增加了維護。最好只有一個。 –

1

枚舉可以在命名空間範圍內定義,您不需要在類中創建枚舉。你可以想象一個像結構或類的枚舉,這是一種你可以在代碼中使用的類型。因此,在命名空間範圍內定義它

namespace MyCode 
{ 
    public enum Days { M, T, W, T, F, Sa, Su } 
}