列舉提供成組的常數值,它們有助於使成員成為強型別以及提高**的可讀性。在 c# 中,使用 enum 來宣告列舉。
列舉分為簡單列舉和標誌列舉兩種。
基本語法示例
enum day ;
以下格式也可以:
enum day
;列舉型別
列舉型別可以是:byte、sbyte、short、ushort、int、uint、long、ulong,如果沒有指定型別,則預設為 int 型別。指定型別示例:
enum day: byte ;
列舉數的值
預設情況下,第乙個列舉數的值為 0,後面每個列舉數的值在前乙個列舉數的值基礎上遞增 1。當然,也可以自行指定,例如:
enum day ;
enum range ;
enum range2 ;//min 為 0,m2 為 51
列舉數大小寫敏感
比如以下列舉有兩個列舉數:
enum enumtest ; //儘管如此,我們仍不推薦這樣寫
取列舉數的值
雖然列舉有型別,但取列舉數的值時,仍然需要進行型別轉換。
public partial class _enum : system.web.ui.page
;protected void page_load(object sender, eventargs e)
}列舉不能放在函式中
列舉可以與類平級,也可以作為類的 field,但不能放在函式中。可以加 public 等修飾符。
以下是使用列舉時幾條好的建議。
優先考慮使用列舉,而不是類的靜態常量
比如:public static class day
應該使用如下的列舉:
enum day ;
如果引數、返回值、變數等型別可以是列舉,則不要使用其它基礎型別
比如:range r = range.max;
//好int r = (int)range.max;
//不好
列舉命名
列舉一般使用名詞或名詞組合,簡單列舉使用單數,標誌列舉使用複數。
大多數情況下不需要更改列舉的預設型別
也就是說大多數情況下,使用 int(system.int32)作為列舉型別。除非:
不要在列舉中設定哨兵
我們可能覺得在列舉的兩端加上哨兵,這樣在判斷乙個數是否在列舉中時,只需要判斷是否在哨兵之中。非常不幸,我們不應該這麼做,這破壞了列舉的意義。
enum day ;
//firstvalue、lastvalue 應該去掉
簡單列舉
前面提到的 day、range 都可以稱之為簡單列舉,因為不能將他們各自的值組合起來。
標誌列舉
標誌列舉的設計有兩點要注意。
舉個例子,假如我們在設計 windows 視窗程式,視窗有最小化、最大化、關閉按鈕,我們想任意組合顯示,也就是說我們可以顯示其中的任意 0 個或乙個或多個按鈕。
如果使用簡單列舉,按照排列組合,我們要使用 1 + 3 + 3 + 1 = 8 個列舉數,如果這裡不是三個按鈕,而是四個按鈕,列舉數就更多了。所以這樣不現實。
為什麼這裡使用簡單列舉不現實呢?因為簡單列舉不能組合,採用標誌列舉就可以輕鬆解決了。
[flags]
public enum windowstyle
我們在設定視窗樣式時,利用 or 自由組合:
windowstyle ws = windowstyle.minimum_button | windowstyle.close_button; //表示既有 minimum_button 也有 close_button
這就是為什麼標誌的值要按 2 的冪排列的原因了,也是為什麼標誌多於 32 個時不能使用 int 型別的原因了。
通常我們為常用的標誌組合提供特殊的列舉值
仍然以上述視窗為例,可知大多數情況下,我們均要顯示這三個按鈕,所以每次使用時都要用:
windowstyle ws = windowstyle.minimum_button | maximum_button | windowstyle.close_button;
實在有些繁瑣,我們可以修改列舉為如下:
[flags]
public enum windowstyle
增加乙個 all_button 為前三個標誌的值。使用時直接用 all_button 就可以了。
using system;
using system.collections.generic;
using system.text;
using system.globalization;
namespace test
public class publicbll
set }}
}publicbll.itemtype返回的就是int型的1 or 2 or 3。
如若判斷其值是否等於乙個列舉
if (publicbll.itemtype==(int)style.lenovo)
發表於 @
2023年03月07日 23:08:00||
編輯
c 列舉基礎 與 列舉屬性的訪問
列舉提供成組的常數值,它們有助於使成員成為強型別以及提高 的可讀性。在 c 中,使用 enum 來宣告列舉。列舉分為簡單列舉和標誌列舉兩種。基本語法示例 enum day 以下格式也可以 enum day 列舉型別 列舉型別可以是 byte sbyte short ushort int uint l...
c 列舉與位列舉
環境 c 中的列舉本質上說是乙個整數,但它同時和字串又具有對應關係,可以從vs的提示中看出 下面 演示列舉與數字和字串的相互轉換 public static void main string args 數字轉列舉 console.writeline 數字轉列舉 列舉轉字串 console.write...
列舉 與 列舉的應用
列舉1 include 只定義了乙個資料型別,並沒有定義變數,該資料型別的名字是 enum weekday 預設 值是用0開始 monday 0 tuesday 1 sunday 6 enum weekday int main void 列舉2 include 只定義了乙個資料型別,並沒有定義變數,...