c中列舉的作用是什麼C中的列舉怎麼使用

2021-03-06 17:24:28 字數 5984 閱讀 8827

1樓:匿名使用者

是為了限定取值範圍的 .比如乙個變數是整型,但是可接受範圍只有0-6,如果傳七就不對了.

public enum weekday:int

一樓的例子舉對了,意思講的不對

2樓:匿名使用者

訪問資料時方便用的

例如,在程式中用到多次 星期一到星期五的日期 你可以定義乙個列舉

列舉名.xx 就可以呼叫了

3樓:匿名使用者

列舉是值型別的資料型別,它包含其自己的值並且不能繼承或者傳遞繼承。

例如:你可能要編寫乙個程式來代表星期。你可以使用整數0,1,2,和3代表周

六、週日、周一和周二。這種表示法可以使用,但是會有問題。它不方便。如果**中使用整數值0,則0不能明確代表是週日還是週六。要克服這樣的問題,可以使用列舉。

(以上摘抄自博瑞軟體工程師課程)

4樓:淚之夢幻

在**中使用enum列舉型別,可以將以前笨拙的**變得優雅簡單。

列舉在c/c++/c#中,是乙個被命名的整型常數的集合,列舉在日常生活中很常見。

例如表示星期的sunday, monday, tuesday, wednesday, thursday, friday,

saturday, 就是乙個列舉。

5樓:匿名使用者

將的跟老師沒什麼去別,我就感覺是常量是的東西.群定義常量吧.哈哈。我也初學。top期待更明確的答案

6樓:匿名使用者

限定列舉變數的取值。

7樓:顏香菱度蘊

列舉型別資料對於乙個有限元素集合有不錯的作用比如你要用乙個列舉型別,表示乙個星期每天的名稱的集合可以用enum

weekday=

8樓:令玉蘭鐘嬋

c#中列舉的作用有點類似於陣列。

比如說我們需要在程式設計的過程中使用季節這樣的7個變數那麼就可以使用列舉來進行

enum

season

我們就可以在我們的類或者方法以及變數定義中使用season這個列舉season

yourf=season.summer;

建立乙個變數

這個變數的值是1,但是這個變數顯示出來是「summer」

c#中的列舉怎麼使用

9樓:唯吾獨尊的工具

列舉型別是一種的值型別,它用於宣告一組命名的常數。

(1)列舉的宣告:列舉宣告用於宣告新的列舉型別。

訪問修辭符 enum 列舉名:基礎型別

基礎型別必須能夠表示該列舉中定義的所有列舉數值。列舉宣告可以顯式地宣告 byte、sbyte、short、ushort、int、uint、long 或 ulong 型別作為對應的基礎型別。沒有顯式地宣告基礎型別的列舉宣告意味著所對應的基礎型別是 int。

(2)列舉成員

列舉成員是該列舉型別的命名常數。任意兩個列舉成員不能具有相同的名稱。每個列舉成員均具有相關聯的常數值。

此值的型別就是列舉的基礎型別。每個列舉成員的常數值必須在該列舉的基礎型別的範圍之內。

示例:public enum timeofday:uint

產生編譯時錯誤,原因是常數值 -1、-2 和 –3 不在基礎整型 uint 的範圍內。

(3)列舉成員預設值

在列舉型別中宣告的第乙個列舉成員它的默值為零。

以後的列舉成員值是將前乙個列舉成員(按照文字順序)的值加 1 得到的。這樣增加後的值必須在該基礎型別可表示的值的範圍內;否則,會出現編譯時錯誤。

示例:public enum timeofday:uint

morning的值為0,afternoon的值為1,evening的值為2。

(4)為列舉成員顯示賦值

允許多個列舉成員有相同的值.

沒有顯示賦值的列舉成員的值,總是前乙個列舉成員的值+1.

示例public enum number

b的值為2,d的值為2.

注意:以上列舉值都不能超過它的基礎型別範圍。否則會報錯.

(5)列舉型別與基礎型別的轉換

基礎型別不能隱式轉換為列舉型別

列舉型別也不能隱式轉換為基礎型別

示例:public enum number

class test

}(6)system.enum型別

system.enum 型別是所有列舉型別的抽象基類,並且從 system.enum 繼承的成員在任何列舉型別中都可用。

system.enum 本身不是列舉型別。相反,它是乙個類型別,所有列舉型別都是從它派生的。

system.enum 從型別 system.valuetype派生

(7)使用列舉型別

using system;

public enum timeofday

class test

}static void main()

} 一、c#列舉函式用法

1.列舉數大小寫敏感

比如以下列舉有兩個列舉數:

enum enumtest ; //儘管如此,我們仍不推薦這樣寫

2.取列舉數的值

雖然列舉有型別,但取列舉數的值時,仍然需要進行型別轉換。

public partial class _enum : system.web.ui.page

;protected void page_load(object sender, eventargs e)

}3.列舉不能放在函式中

列舉可以與類平級,也可以作為類的 field,但不能放在函式中。可以加 public 等修飾符。

二、使用列舉時的建議:

1、優先考慮使用列舉,而不是類的靜態常量

比如:public static class day

應該使用如下的列舉:

enum day ;

2、如果引數、返回值、變數等型別可以是列舉,則不要使用其它基礎型別

比如:range r = range.max; //好

int r = (int)range.max; //不好

3、列舉命名

列舉一般使用名詞或名詞組合,簡單列舉使用單數,標誌列舉使用複數。

4、大多數情況下不需要更改列舉的預設型別

也就是說大多數情況下,使用 int(system.int32)作為列舉型別。除非:

·列舉是標誌列舉,且標誌多於 32 個(此時 int 型別裝不下)。

·列舉被非常大量且頻繁地使用,為了節約空間使用小於 int 的型別。

·不得不使用其它型別的情況。

5、不要在列舉中設定哨兵

我們可能覺得在列舉的兩端加上哨兵,這樣在判斷乙個數是否在列舉中時,只需要判斷是否在哨兵之中。 非常不幸,我們不應該這麼做,這破壞了列舉的意義。

enum day ; //firstvalue、lastvalue 應該去掉

三、簡單列舉和標誌列舉

1、簡單列舉

前面提到的 day、range 都可以稱之為簡單列舉,因為不能將他們各自的值組合起來。

簡單列舉包含的值不用於組合,也不用於按位比較。

2、標誌列舉

標誌列舉應使用按位 or 操作進行組合。

標誌列舉的設計有兩點要注意:

·指明 flagsattribute,以指示可以將列舉作為位域(即一組標誌)處理。

·列舉中各標誌的值應該是以 2 的冪來賦值,即:1、2、4、8、16、32……

舉個例子,假如我們在設計 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)。

10樓:匿名使用者

先建立乙個列舉類 關鍵字 enum ,列舉值就是 『男』 ,』女『,然後查詢你的資料庫指定資料

用if條件判斷,如果是0 那麼值就是列舉的值(呼叫列舉類名.就出來值了)「男」 否則「女」

11樓:李岩

可以在資料查詢的時候進行處理

select case *** when 1 then '男' else '女' end as *** from***

12樓:匿名使用者

using system;

public enum timeofdayclass test

}static void main()}

13樓:匿名使用者

查詢出來的資料在後台做下判斷

14樓:種朵苟慧麗

列舉型別是一種值型別,它用於宣告一組命名的常數。

(1)列舉的宣告:列舉宣告用於宣告新的列舉型別。

訪問修辭符

enum

列舉名:基礎型別

;可以省略「基礎型別」。基礎型別必須能夠表示該列舉中定義的所有列舉數值。列舉宣告可以顯式地宣告

byte、sbyte、short、ushort、int、uint、long

或ulong

型別作為對應的基礎型別。沒有顯式地宣告基礎型別的列舉宣告意味著所對應的基礎型別是

int。

(2)列舉成員

列舉成員是該列舉型別的命名常數。任意兩個列舉成員不能具有相同的名稱。每個列舉成員均具有相關聯的常數值。

此值的型別就是列舉的基礎型別。每個列舉成員的常數值必須在該列舉的基礎型別的範圍之內。

(3)列舉成員預設值

在列舉型別中宣告的第乙個列舉成員它的預設值為零。

以後的列舉成員值是將前乙個列舉成員(按照文字順序)的值加

1得到的。這樣增加後的值必須在該基礎型別可表示的值的範圍內;否則,會出現編譯時錯誤。

(4)為列舉成員顯示賦值

允許多個列舉成員有相同的值。沒有顯示賦值的列舉成員的值,總是前乙個列舉成員的值+1

(5)列舉型別與基礎型別的轉換

基礎型別不能隱式轉換為列舉型別,列舉型別也不能隱式轉換為基礎型別。

以上這些就是c#中列舉所包含的相關知識。有關列舉的具體使用,可以參考秒秒學**上講解列舉的單元,希望能幫到你。

C中的override作用是什麼

要擴充套件或修改繼承的方法 屬性 索引器或事件的抽象實現或虛實現,必須使用 override 修飾符。override 方法提供從基類繼承的成員的新實現。由 override 宣告重寫的方法稱為重寫基方法。重寫的基方法必須與 override 方法具有相同的簽名。有關繼承的資訊,請參見繼承 c 程式...

c中建構函式的作用,C 中建構函式的作用

共同點 都是例項化物件,初始化資料的 預設構造是說所有的類都從祖先object那繼承了空參的構造方法,你不寫與寫空參構造都存在,而有引數的構造一般是自己寫的,寫就有不寫就沒有,它的作用和空參的一樣,只是它裡面可以有引數,給你個例子來說明吧 有乙個類monitor它有屬性string height s...

c 中符號的作用,C 中 並且 用什麼符號

在類裡面 這個事析構函式 如果不加 系統會預設設定乙個析構函式 系統預設設定的析構函式為空值 析構函式的呼叫時這樣的 越早宣告越晚呼叫 例如這個題目 它在建立類b的物件b時,呼叫類b的建構函式 而該建構函式 自動先呼叫 基類的建構函式 當完成 建立物件後 主函式 結束,開始 析構 主函式 然後 析構...