c 列舉基礎 與 列舉屬性的訪問

2022-03-24 09:43:04 字數 2677 閱讀 3453

列舉提供成組的常數值,它們有助於使成員成為強型別以及提高**的可讀性。在 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 只定義了乙個資料型別,並沒有定義變數,...