C 學習 列舉

2021-08-07 08:48:19 字數 2971 閱讀 5922

c# 中,所有列舉都是 system.enum 類的例項,system.enum不可以被派生。但是這個類有一些靜態方法,可以用來發現有關列舉例項中操作值的資訊。

預設情況下,列舉中每個元素的基礎型別都為 int。 可以使用冒號指定另一種整數型別:

enum days: byte

1、列舉能夠使**更加清晰,它允許使用描述性的名稱表示整數值。

2、列舉使**更易於維護,有助於確保給變數指定合法的、期望的值。

3、列舉使**更易輸入。

1、簡單列舉

c#提供類乙個類來方便操作列舉,下面給出這個類的常用方法:

方法名稱

compareto

將此例項與指定物件進行比較並返回乙個對二者的相對值的指示

equals

指示此例項是否等於指定的物件

format

根據指定格式將指定列舉型別的指定值轉換為其等效的字串表示形式

getname

在指定列舉中檢索具有指定值的常數的名稱

getnames

檢索指定列舉中常數名稱的陣列

gettypecode

返回此例項的基礎 typecode

getunderlyingtype

返回指定列舉的基礎型別

getvalues

索指定列舉中常數值的陣列

hasflag

確定當前例項中是否設定了乙個或多個位域

isdefined

返回指定列舉中是否存在具有指定值的常數的指示

parse

將乙個或多個列舉常數的名稱或數字值的字串表示轉換成等效的列舉物件。 乙個引數指定該操作是否不區分大小寫

tryparse

將乙個或多個列舉常數的名稱或數字值的字串表示轉換成等效的列舉物件。 用於指示轉換是否成功的返回值

要顯示指定列舉的底層資料型別很簡單,只需在宣告列舉的時候加個冒號,後面緊跟要指定的資料型別。

enum *** : byte

//顯示指定列舉的底層資料型別

;       //

此分號可以省略

顯式設定列舉的成員常量值,預設是從0開始,逐個遞增的。但是以下例子卻設定成了1,2,3,4,5,6,7,0。而且成員值可以一樣的。

enum

week

console.writeline((

int)week.monday);  //

獲取值

示例,由列舉值獲取列舉名稱與由列舉名稱獲取列舉值

class

program

}enum

man

2、標誌列舉

標誌列舉要在頂部加[system.flags]特性進行宣告。而且列舉支援組合運算。先來看個例子

class

program

else

console.readkey();}}

[system.flags]

public

enum

week

這種位運算是非常有用的,在sql語句裡也支援位運算。也就是說,把乙個列舉運算後的結果存入資料庫之後,還能夠按照你的要求讀取出來。比如:

將乙個"白美"存如資料庫的值存入資料庫,那麼存入去的就是整型5。

那麼我想讀出所有的"白"資料列表怎麼讀呢?白,可以是純白"1",也是是白富3,可以是白美5,也可以是白富美7,你可以用in來讀,但是更好的方法是在sql語句中同樣使用位運算。

select

*from table1 where tag &

1=

1  //tag是列名

select

*from table1 where tag |

1= tag

當引數、返回值、變數等型別可以使列舉,盡量使用列舉(要注意考慮分類的穩定性)

大多數情況下都可以使用int型別列舉,下列情況除外。

下面寫乙個:列舉繫結mvc3下拉列表的示例:

控制器**:

namespace

mvcstart.controllers

return

view(***list);}}

public

enum

***

}

檢視**:

@model dictionary<

string

, int

>

<

select

>

@foreach(var item in @model)

select

>

生成的html**:

<

select

>

<

option

value

="1"

>male

option

>

<

option

value

="2"

>female

option

>

<

option

value

="3"

>other

option

>

select

>

再來乙個例子,獲取列舉描述

public

static

class

getdescription

return

en.tostring();}}

public

enum

***

C 學習之列舉

列舉分為一般列舉和標誌列舉兩類。新建控制台應用程式,原始碼如下 示例1 一般列舉 using system using system.collections.generic using system.linq using system.text namespace 03列舉 定義qq狀態列舉型別 預...

C 學習筆記 列舉

一 c 的enum工具提供了另一種建立符號常量的方式,這種方式可以代替const。它還允許定義新型別,但必須按嚴格的限制進行。使用enum的語法與使用結構類似。例如 enum spectrum 這句語法包含兩個意義 1 讓spectrum成為新型別的名稱 spectrum被稱為列舉,就像struct...

C學習筆記 列舉

可以使用列舉 enumerated type 宣告代表整數常量的符號名稱,關鍵字enum建立乙個新的列舉型別 實際上,enum常量是int型別的 列舉的本質就是int型的常量 enum spectrum 申明乙個列舉型別enum spectrum color 定義乙個列舉變數void func en...