列舉
enum
關鍵字告訴編譯器該類繼承自抽象類 Enum
,而程式設計師不必顯式繼承它。Enum
是 ValueType
的後代,旨在與不同的命名常量集一起使用。
public enum DaysOfWeek
{
Monday,
Tuesday,
}
你可以選擇為每個(或其中一些)指定特定值:
public enum NotableYear
{
EndOfWwI = 1918;
EnfOfWwII = 1945,
}
在這個例子中,我省略了 0 的值,這通常是一種不好的做法。enum
將始終具有由顯式轉換 (YourEnumType) 0
生成的預設值,其中 YourEnumType
是你宣告的 enume
型別。如果未定義值 0,則 enum
在啟動時將沒有定義的值。
enum
的預設底層型別是 int
,你可以將基礎型別更改為任何整數型別,包括 byte
,sbyte
,short
,ushort
,int
,uint
,long
和 ulong
。下面是一個基礎型別為 byte
的列舉:
enum Days : byte
{
Sunday = 0,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday
};
另請注意,你只需使用強制轉換即可轉換為基礎型別/從基礎型別轉換:
int value = (int)NotableYear.EndOfWwI;
出於這些原因,你最好在暴露庫函式時檢查 enum
是否有效:
void PrintNotes(NotableYear year)
{
if (!Enum.IsDefined(typeof(NotableYear), year))
throw InvalidEnumArgumentException("year", (int)year, typeof(NotableYear));
// ...
}