枚舉應該是類型安全的。我認爲他們並沒有讓它們含蓄地拒絕其他用途。雖然框架允許你爲它們分配一個不變的值,但你應該重新考慮你的意圖。如果您主要使用枚舉來存儲常量值,請考慮使用靜態類:
public static class ReturnValue
{
public const int Success = 0;
public const int FailReason1 = 1;
public const int FailReason2 = 2;
//Etc...
}
可讓您執行此操作。
public static int main(string[] args){
return ReturnValue.Success;
}
編輯
當你做要提供值枚舉是當你想將它們結合起來。見下面的例子:
[Flags] // indicates bitwise operations occur on this enum
public enum DaysOfWeek : byte // byte type to limit size
{
Sunday = 1,
Monday = 2,
Tuesday = 4,
Wednesday = 8,
Thursday = 16,
Friday = 32,
Saturday = 64,
Weekend = Sunday | Saturday,
Weekdays = Monday | Tuesday | Wednesday | Thursday | Friday
}
這個枚舉然後可以通過使用按位數學被消耗。有關某些應用程序,請參閱以下示例
public static class DaysOfWeekEvaluator
{
public static bool IsWeekends(DaysOfWeek days)
{
return (days & DaysOfWeek.Weekend) == DaysOfWeek.Weekend;
}
public static bool IsAllWeekdays(DaysOfWeek days)
{
return (days & DaysOfWeek.Weekdays) == DaysOfWeek.Weekdays;
}
public static bool HasWeekdays(DaysOfWeek days)
{
return ((int) (days & DaysOfWeek.Weekdays)) > 0;
}
public static bool HasWeekendDays(DaysOfWeek days)
{
return ((int) (days & DaysOfWeek.Weekend)) > 0;
}
}
工程就像一個魅力,謝謝!奇怪的是你可以定義一個枚舉:「public enum MyEnum:int {...}」,並且它的值不能隱式轉換。那裏沒有「泛型枚舉」的概念嗎? - public enum MyEnum - 或者這是完全荒謬的? –
Pwninstein
2009-02-23 16:02:23
你可以delcare鍵入你的enum「public enum ReturnValue:int」,它強制值的類型爲int。它仍然不提供隱式轉換。編輯以顯示何時它是一個在枚舉中使用值的好主意。 – 2009-02-23 19:44:05