版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第深入理解C#之枚舉要顯示指定枚舉的底層數(shù)據(jù)類型很簡(jiǎn)單,只需在聲明枚舉的時(shí)候加個(gè)冒號(hào),后面緊跟要指定的數(shù)據(jù)類型。
enumsex:byte//顯示指定枚舉的底層數(shù)據(jù)類型
male,
female,//此逗號(hào)可以省略
};//此分號(hào)可以省略
顯式設(shè)置枚舉的成員常量值,默認(rèn)是從0開始,逐個(gè)遞增的。但是以下例子卻設(shè)置成了1,2,3,4,5,6,7,0。而且成員值可以一樣的。
enumWeek
Monday=1,
Tuesday=2,
Wednesday=3,
Sunday=0,
Everyday=1//成員的值可以設(shè)置成一樣的,但是成員不行
Console.WriteLine((int)Week.Monday);//獲取值
示例,由枚舉值獲取枚舉名稱與由枚舉名稱獲取枚舉值
classProgram
staticvoidMain(string[]args)
Console.WriteLine(Enum.GetName(typeof(Man),1));//還是劉備(由值獲取名字)
string[]array1=Enum.GetNames(typeof(Man));
Console.WriteLine(array1[1]);//關(guān)羽
Arrayarray2=Enum.GetValues(typeof(Man));
Console.WriteLine(array2.GetValue(1));//還是關(guān)羽
Typet=Enum.GetUnderlyingType(typeof(Man));
Console.WriteLine(t);//輸出Int32
//由值獲取內(nèi)容
inti=1;
stringName=Enum.Parse(typeof(Man),i.ToString()).ToString();//此時(shí)Name="劉備"
Console.WriteLine(Name);
//由值獲取內(nèi)容
stringName2="關(guān)羽";
intj=Convert.ToInt32(Enum.Parse(typeof(Man),Name2));//此時(shí)j=2
Console.WriteLine(j);
Console.ReadKey();
enumMan
劉備=1,
關(guān)羽=2,
張飛=3
}
2、標(biāo)志枚舉
標(biāo)志枚舉要在頂部加[System.Flags]特性進(jìn)行聲明。而且枚舉支持組合運(yùn)算。先來看個(gè)例子
classProgram
staticvoidMain(string[]args)
varman=Week.白|Week.美;//賦值為101計(jì)算方法001或上100,結(jié)果是101
Console.WriteLine((int)man);
if((manWeek.白)==Week.白)//101man
{//001白逐位相與,
Console.WriteLine("此人白");//001如果結(jié)果是白,就可以反推出man包含白
else
Console.WriteLine("此人黑");
Console.ReadKey();
[System.Flags]
publicenumWeek
白=1,//001
富=2,//010
美=4,//100
}
這種位運(yùn)算是非常有用的,在sql語句里也支持位運(yùn)算。也就是說,把一個(gè)枚舉運(yùn)算后的結(jié)果存入數(shù)據(jù)庫(kù)之后,還能夠按照你的要求讀取出來。比如:
將一個(gè)"白美"存如數(shù)據(jù)庫(kù)的值存入數(shù)據(jù)庫(kù),那么存入去的就是整型5。
那么我想讀出所有的"白"數(shù)據(jù)列表怎么讀呢?白,可以是純白"1",也是是白富3,可以是白美5,也可以是白富美7,你可以用in來讀,但是更好的方法是在sql語句中同樣使用位運(yùn)算。
select*fromTable1whereTag1=1//Tag是列名
select*fromTable1whereTag|1=Tag
三、枚舉的使用建議
當(dāng)參數(shù)、返回值、變量等類型可以使枚舉,盡量使用枚舉(要注意考慮分類的穩(wěn)定性)
大多數(shù)情況下都可以使用int類型枚舉,下列情況除外。
枚舉可能被大量頻繁的使用,這時(shí)為了節(jié)約空間可以使用小于int類型的枚舉。
標(biāo)志枚舉,且標(biāo)志多于32個(gè)。
下面寫一個(gè):枚舉綁定MVC3下拉列表的示例:
控制器代碼:
namespaceMvcStart.Controllers
publicclassHomeController:Controller
publicActionResultGetSexList()
Dictionarystring,intSexlist=newDictionarystring,int
string[]keys=Enum.GetNames(typeof(sex));
Arrayvalues=Enum.GetValues(typeof(sex));
for(inti=0;ikeys.Length;i++)
Sexlist.Add(keys[i],(int)values.GetValue(i));
returnView(Sexlist);
publicenumsex
male=1,
female=2,
other=3
}
視圖代碼:
@modelDictionarystring,int
select
@foreach(varitemin@Model)
optionvalue="@item.Value"@item.Key/option
/select
生成的HTML代碼:
select
optionvalue="1"male/option
optionvalue="2"female/option
optionvalue="3"other/option
/select
再來一個(gè)例子,獲取枚舉描述
publicstaticclassGetDescription
///summary
///獲取描述信息
////summary
///paramname="en"/param
///returns/returns
publicstaticstringdescription(thisEnumen)
Typetype=en.GetType();
MemberInfo[]memInfo=type.GetMember(en.ToString());
if(memInfo!=nullmemInfo.Length0)
object[]attrs=memInfo[0].GetCustomAttributes(typeof(System.ComponentModel.DescriptionAttribute),false);
if(attrs!=nullattrs.Length0)
return((DescriptionAttribute)attrs[0]).Description;
returnen.ToString();
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 交通設(shè)施養(yǎng)護(hù)維修制度
- 2026湖北省定向西北工業(yè)大學(xué)選調(diào)生招錄參考題庫(kù)附答案
- 2026湖南財(cái)政經(jīng)濟(jì)學(xué)院招聘勞務(wù)派遣性質(zhì)工作人員參考題庫(kù)附答案
- 2026福建泉州市面向北京科技大學(xué)選優(yōu)生選拔引進(jìn)參考題庫(kù)附答案
- 2026福建省面向華中師范大學(xué)選調(diào)生選拔工作考試備考題庫(kù)附答案
- 2026福建福州第十九中學(xué)招聘編外行政人員(勞務(wù)派遣)1人考試備考題庫(kù)附答案
- 2026西藏林芝市察隅縣農(nóng)村公益電影放映人員招聘1人備考題庫(kù)附答案
- 2026遼寧大連產(chǎn)業(yè)園社招招聘?jìng)淇碱}庫(kù)附答案
- 2026陜西省面向南開大學(xué)招錄選調(diào)生備考題庫(kù)附答案
- 2026魯南技師學(xué)院第一批招聘教師8人參考題庫(kù)附答案
- ktv客遺物管理制度
- 制造業(yè)公司獎(jiǎng)懲管理制度
- 養(yǎng)老院公司年會(huì)策劃方案
- 司機(jī)入職心理測(cè)試題及答案
- 退休支部換屆工作報(bào)告
- T/CMES 37002-2022景區(qū)玻璃類游樂和觀景設(shè)施建造單位能力條件要求
- T/CATCM 029-2024中藥材產(chǎn)地加工(趁鮮切制)生產(chǎn)技術(shù)規(guī)范
- 2025至2030中國(guó)氯蟲苯甲酰胺行業(yè)應(yīng)用狀況及未來前景展望報(bào)告
- 網(wǎng)絡(luò)游戲代練團(tuán)隊(duì)服務(wù)合作協(xié)議
- 活牛轉(zhuǎn)讓協(xié)議書
- 高血壓病人的手術(shù)中護(hù)理
評(píng)論
0/150
提交評(píng)論