c 列舉與位列舉

2021-10-04 19:26:37 字數 2110 閱讀 3200

環境:

c#中的列舉本質上說是乙個整數,但它同時和字串又具有對應關係,可以從vs的提示中看出:

下面**演示列舉與數字和字串的相互轉換:

public

static

void

main

(string

args)")

;//數字轉列舉

console.

writeline

($"數字轉列舉 => ");

//列舉轉字串

console.

writeline

($"列舉轉字串 => ");

//字串轉列舉

console.

writeline

($"字串轉列舉 => ");

console.

writeline

("ok!");

console.

readline()

;}public

enum enumdegree

因為c#中的列舉本身是數字,所以只要列舉的值只要是設定的恰當,完全可以表示多種狀態。

首先看如下的使用方式:

class

program")

; console.

writeline

($"test contains enumtest.none =>");

console.

writeline

($"test contains enumtest.first =>");

console.

writeline

($"test contains enumtest.second =>");

console.

writeline

("ok!");

console.

readline()

;}}[

flags

]public

enum enumtest

輸出結果:

位列舉的理解:

這裡主要解釋下怎麼恰當設定列舉的值:

我們直接將上面的列舉定義用二進位制表示一下:

[

flags

]public

enum enumtest

這樣再回過頭來看看想想「復合列舉的多狀態是怎麼儲存的?怎麼判斷是否包含某個狀態的?」

一目了然了吧!

using system;

using system.collections;

using system.data;

using system.io;

using system.net;

using system.threading;

using system.threading.tasks;

namespace testdi

-", i,

(flagsdemo)i);}

for(

int i =

0; i <

16; i++)-"

, i,

(single)i);}

flagsdemo d =

(short

)flagsdemo.five + flagsdemo.three;

console.

writeline

(d);

}public

static

void

main

(string

args)}[

flags

]enum flagsdemo :

short

enum single :

short

}

列舉與位列舉

列舉型別 是用於宣告一組命名的常數的基本資料型別 值型別 列舉的定義 宣告enum變數 enum name 指定列舉的型別名稱 enumeration list 是乙個用逗號分隔的識別符號列表 所有列舉型別都隱式地繼承system.enum型別,system.enum型別是繼承自system.val...

C語言 列舉與位運算

在實際問題中,有些變數的取值被限定在乙個有限的範圍內。例如,乙個星期內只有七天,一年只有十二個月,乙個班每週有六門課程等等。如果把這些量說明為整型,字元型或其它型別顯然是不妥當的。為此,c語言提供了一種稱為 列舉 的型別。在 列舉 型別的定義中列舉出所有可能的取值,被說明為該 列舉 型別的變數取值不...

C 中列舉與位列舉的區別和使用

呼叫普通列舉時如圖所示,呼叫位列舉多選時需要中間加乙個 列舉和位列舉的定義 位列舉定義時需要加乙個 flags 還要賦值第二個是第乙個的二倍 class program 判斷這個學生是否包含 if hobby.吃.hasflag hobby.吃 console.readkey 學生類 public ...