1樓:du瓶邪
這種用處很大,比如許可權、執行狀態等,都可以用一個int型儲存到資料庫中,c#中使用列舉可以處理這個問題。
[flags]
public enum permission在資料庫中判斷:
and (@permission is null or @permission=0 or permission &@permission =@permission)
2樓:匿名使用者
設定一個變數flag,是一個來表示判斷的變數,當做標誌
3樓:匿名使用者
|class flagsattributedemo
;// define an enum with flagsattribute.
[flagsattribute]
enum multihue : short
;static void main( )
- ",
val, ( (singlehue)val ).tostring( ) );
console.writeline(
"\nall possible ***binations of values of an \n" +
"enum with flagsattribute:\n" );
// display all possible ***binations of values.
// also display an invalid value.
for( int val = 0; val <= 8; val++ )
console.writeline( " - ",
val, ( (multihue)val ).tostring( ) );
} }/*this example of the flagsattribute attribute
generates the following output.
all possible ***binations of values of an
enum without flagsattribute:
0 - black
1 - red
2 - green
3 - 3
4 - blue
5 - 5
6 - 6
7 - 7
8 - 8
all possible ***binations of values of an
enum with flagsattribute:
0 - black
1 - red
2 - green
3 - red | green
4 - blue
5 - red | blue
6 - green | blue
7 - red | green | blue
8 - 8*/
4樓:
加個屬性是程式集的說明資訊
5樓:
到這看看
6樓:匿名使用者
指示可以將列舉作為位域(即一組標誌)處理。
c#中怎樣定義列舉?
7樓:聽雨知秋寒
建議:最好是定義一個類,裡面全放列舉
如 :public class publicenum}
8樓:仰起臉__微笑
public enum **
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)。
什麼是巨集定義,在C語言中 巨集定義是什麼?
巨集定義是高階語言編譯器提供的常用語法,其目的是利用某一識別符號標識某個文字字串。在編寫程式時,如果程式中反覆地使用某個資料或某段程式片段,就可以考慮將這個資料或程式片段定義為巨集,然後每個出現該資料或程式片段的地方用巨集名替代 選擇巨集定義來做的好處是程式簡潔,可讀性好,而且當需要修改這些相同的程...
c語言和c 在宣告和定義之間的區別是什麼
1.變數的宣告,基本與定義是一樣的,即宣告變數處即是定義了改變數,如int a 在處定義了變數。從概念上講,宣告即是讓編譯器知道要宣告的物件是個函式,類,變數等,不為它分配實際的記憶體空間。所以有函式宣告,變數宣告,類宣告。主要區別是表現在一個類中 class student student stu...
c語言中函式定義中的冒號是什麼意思
1 表示機來構內位域的定義 源即該變數佔幾個baibit空間 如下 duzhi typedef struct 2 建構函式後面的冒號 dao起分割作用,是類給成員變數賦值的方法,初始化列表,更適用於成員變數的常量const型。如下 struct 3 public 和private 後面的冒號,表示後...