位置:首頁 > 軟件操作教程 > 編程開發(fā) > C# > 問題詳情

C# 枚舉

提問人:劉團圓發(fā)布時間:2020-12-04

    每種類型(除string外)都有明確的取值范圍。誠然,有些類型(如double)的取值范圍非常大, 可以看成是連續(xù)的,但它們仍是一個固定集合。最簡單的示例是bool類型,它只能取兩個值:true或false。

    有時希望變量取的是一個固定集合中的值。例如,讓orientation類型可以存儲north、south、east或west中的一個值。

    此時可以使用枚舉類型。枚舉可以完成這個orientation類型的任務:它們允許定義一個類型,其取值范圍是用戶提供的值的有限集合。所以,需要創(chuàng)建自己的枚舉類型orientation,它可以從上述4個值中取一個值。

    注意有一個附加步驟一不是僅聲明一個給定類型的變量,而是聲明和描述一個用戶定義的類型,再聲明這個新類型的變量。

定義枚舉

可以用enum關鍵字定義枚舉,如下所示:

enum <typeName>

{

    <valuel>,

    <value2>,

    <value3>,

    ...

    <valueN>

}

接著聲明這個新類型的變量:

<typeName> <varName>;

并賦值:

<varName> = <typeName>.<value>;

枚舉使用一個基本類型來存儲。枚舉類型可取的每個值都存儲為該基本類型的一個值,默認情況下該類型為int。通過在枚舉聲明中添加類型,就可以指定其他基本類型:

enum <typeName> : <underlyingType>

{

    <valuel>,

    <value2>,

    <value3>,

    ....

    <valueN>

}

枚舉的基本類型可以是 byte、sbyte、short、ushort、int、uint、long 和 ulong。

默認情況下,每個值都會根據定義的順序(從0開始),被自動賦予對應的基本類型值。這意味著<valuel> 的值是0, <value2>的值是1, <value3>的值是2,等等??梢灾貙戇@個賦值過程:使用=運算符,指定每個枚舉的實際值:

enum <typeName> : <underlyingType>

{

    <valuel> = <actualVall>,

    <value2> = <actualVal2>,

    <value3> = <actualVal3>,

    ...

    <valueN> = <actualValN>

}

還可以使用一個值作為另一個枚舉的基礎值,為多個枚舉指定相同的值:

enum <typeName> : <underlyingType>

{

    <valuel> = <actualVall>,

    <value2> = <valuel>f <value3>,

    ...

    <valueN> - <actualValN>

}

未賦值的任何值都會自動獲得一個初始值,這里使用的值是從比上一個明確聲明的值大1開始的序列。例如,在上面的代碼中,<value3>的值是<valuel>+1。

注意這可能會產生預料不到的問題,在一個定義(如<value2>=<vakiel>)后指定的值可能與其他值相同。例如,在下面的代碼中,<value4>的值與<value2>的值相同:

enum <typeName> : <underlyingType>

{

    <valuel> = <actualVall>,

    <value2>,

    <value3> = <valuel>,

    <value4>,

    ...

    <valueN> = <actualValN>

}

當然,如果這正是希望的結果,代碼就是正確的。還要注意,以循環(huán)方式賦值可能會產生錯誤,例如:

enum <typeName> : <underlyingType>

{

    <valuel> = <value2>,

    <value2> = <valuel>

}

繼續(xù)查找其他問題的答案?

相關視頻回答
回復(0)
返回頂部