枚舉類型及Enum方法_第1頁
枚舉類型及Enum方法_第2頁
枚舉類型及Enum方法_第3頁
枚舉類型及Enum方法_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、枚舉類型及Enum方法實(shí)際問題中,有些變量的取值被限定在一個(gè)有限的范圍內(nèi)。例如,一個(gè)星期只有七大,一年只有十二個(gè)月。如果把這些量說明為整型,字符型或其它類型顯然是不妥當(dāng)?shù)?。為此,程序設(shè)計(jì)語言提供了一種枚舉類型(也稱為枚舉)。枚舉類型為定義一組可以賦給變量的命名整數(shù)常量提供了一種有效的方法。例如,使用枚舉類型定義一個(gè)星期七天,定義一年十二個(gè)月:enumDaysSunday,Monday,Tuesday,Wednesday,Thursday,Friday,SaturdayenumMonths:byteJan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec1

2、.枚舉的聲明,其形式為:訪問修飾符enum枚舉名:基礎(chǔ)類型枚舉成員(標(biāo)識(shí)符)說明:任意枚舉類型都有基礎(chǔ)類型,該基礎(chǔ)類型可以是除char以外的任何整型,如:byte、sbyte、short、ushort、int、uint、long、ulong?;A(chǔ)類型必須能夠表示該枚舉中定義的所有枚舉成員。枚舉聲明時(shí)可以對(duì)基礎(chǔ)類型進(jìn)行顯式地聲明。而沒有顯式聲明時(shí)基礎(chǔ)類型默認(rèn)是into基礎(chǔ)類型指定為每個(gè)枚舉數(shù)成員分配的內(nèi)存大小。2 .枚舉注意事項(xiàng):1)枚舉成員不能是數(shù)值常量、字符常量、字符串常量,使用時(shí)不能加單、雙引號(hào)。例如,以下的定義是錯(cuò)誤的:enumDays,Sun?,Mon?,Tues?,Wed?,Thu?

3、,Fri?,Sat?enumDays"Sun":Mon","Tues":Wed',"Thu":Fri"",Sat2)每個(gè)枚舉成員均具有相關(guān)聯(lián)的常數(shù)值。此值的類型就是枚舉的基礎(chǔ)類型。枚舉類型屬于順序類型。根據(jù)定義類型時(shí)各枚舉成員的排列順序確定它們的序列,如在默認(rèn)基礎(chǔ)類型即int的情況下序列號(hào)從0開始,后面每個(gè)枚舉成員的值依次遞增1。當(dāng)然可以顯式賦值。例如:enumDaysSunday=2,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday3)枚舉成員是

4、常量,不是變量。盡管是標(biāo)識(shí)符也不能在程序中當(dāng)做變量用賦值語句對(duì)它賦值。例如以下在程序中對(duì)枚舉成員賦值會(huì)提示錯(cuò)誤。publicclassEnumTestenumDaysSunday,Monday,Tuesday,Wednesday,Thursday,Friday,SaturdaystaticvoidMain()Sunday=5;Sunday=Monday;Console.WriteLine("Sunday=0",Sunday);4)從枚舉成員到整型的轉(zhuǎn)換需要用顯式類型轉(zhuǎn)換來完成。例如對(duì)于下面的語旬將枚舉類型Days類型的枚舉成員通過使用強(qiáng)制轉(zhuǎn)換來轉(zhuǎn)換枚舉成員為整型。publi

5、cclassEnumTestenumDaysSunday,Monday,Tuesday,Wednesday,Thursday,Friday,SaturdaystaticvoidMain()(intx=(int)Days.Sunday;inty=(int)Days.Monday;Console.WriteLine("Sunday=0",x);Console.WriteLine("Monday=0",y);5)同一個(gè)枚舉類型中任意兩個(gè)枚舉成員不能具有相同的名稱。每個(gè)枚舉成員的常數(shù)值必須在該枚舉的基礎(chǔ)類型的范圍之內(nèi)。6)同一個(gè)枚舉成員不能出現(xiàn)在兩個(gè)或兩個(gè)以上的

6、枚舉類型定義中。7)設(shè)有變量a,b,c被說明為上述的Days,可采用下述任一種方式:enumDaysSunday=-1,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday;enumDaysa,b,c;enumDaysSunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturdaya,b,c;enumSunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturdaya,b,c;3 .枚舉類經(jīng)常用在switch-case結(jié)構(gòu)中,其常用的(Enum)方法主要有

7、以下幾個(gè):1) Enum.Parse方法(Type,String):該方法用于將一個(gè)或多個(gè)枚舉常數(shù)的名稱或數(shù)字值的字符串表示轉(zhuǎn)換成等效的枚舉對(duì)象。語法為publicstaticObjectParse(TypeenumType,stringvalue),其參數(shù)enumType是枚舉類型,value是要轉(zhuǎn)換的值或名稱的字符串,返回值是enumType類型的對(duì)象。value參數(shù)中包含枚舉成員基礎(chǔ)值字符串表示形式、已命名的常數(shù)或由逗號(hào)分隔的已命名常數(shù)列表。例如:usingSystem;enumDaysSunday,Monday,Tuesday,Wednesday,Thursday,Friday,Sat

8、urdaypublicclassExamplepublicstaticvoidMain()/Daysday=(Days)Enum.Parse(typeof(Days),"0");Daysday=(Days)Enum.Parse(typeof(Days),"Sunday");switch(day)caseDays.Sunday:Console.WriteLine("TodayisSunday");break;caseDays.Monday:Console.WriteLine("TodayisMonday");brea

9、k;case.Console.Read();2) Enum.Parse方法(Type,String,Boolean)該方法用于將一個(gè)或多個(gè)枚舉常數(shù)的名稱或數(shù)字值的字符串表示轉(zhuǎn)換成等效的枚舉對(duì)象。一個(gè)參數(shù)指定該操作是否區(qū)分大小寫。其中參數(shù)Boolean取true時(shí)忽略大小寫,為false時(shí)考慮大小寫。如上例:Daysday=(Days)Enum.Parse(typeof(Days),"sunday",true»匕時(shí)盡管"sunday"不是枚舉類Days中的枚舉常數(shù)成員,但是仍能得到返回值。3) Enum.ToString方法該方法用于將實(shí)例的值轉(zhuǎn)

10、換為其等效的字符串表示形式。例如:usingSystem;enumDaysSunday=1,Monday,Tuesday,Wednesday,Thursday,Friday,SaturdaypublicclassExamplepublicstaticvoidMain()Enumday=Days.Sunday;Console.WriteLine("Thevalueis'0'",day.ToString();Console.WriteLine("Thevalueis'0'",(Days)1).ToString();Consol

11、e.Read();4) Enum.IsDefined方法(Type,String)該方法用于指定枚舉中是否存在具有指定值的常數(shù)的判定。其參數(shù)enumType是枚舉類型,value參數(shù)可以是:enumType類型的任何成員;一個(gè)變量,其值是enumType類型的一個(gè)枚舉成員;表示枚舉成員名稱的字符串或者enumType的基礎(chǔ)類型的一個(gè)值。如果枚舉類型中某個(gè)常數(shù)具有等于value的值,返回值為true,否則為false。例如:usingSystem;enumDaysSunday=1,Monday,Tuesday,Wednesday,Thursday,Friday,Saturdaypubliccla

12、ssExamplepublicstaticvoidMain()intx=(int)Days.Sunday;Console.WriteLine("'0'",Enum.IsDefined(typeof(Days),Days.Sunday);Console.WriteLine("'0'",Enum.IsDefined(typeof(Days),x);Console.WriteLine("'0'",Enum.IsDefined(typeof(Days),"Sunday");C

13、onsole.WriteLine("'0'",Enum.IsDefined(typeof(Days),1);Console.Read();5)Enum.GetName方法該方法用于在指定枚舉中檢索是否具有指定值的常數(shù)的名稱。其參數(shù)enumType是枚舉類型,value參數(shù)是特定枚舉常數(shù)的值(根據(jù)其基礎(chǔ)類型)。返回一個(gè)值為value的枚舉常數(shù)的名稱字符串;如果沒有找到這樣的常數(shù),則返回nullo如果多個(gè)枚舉成員具有相同的基礎(chǔ)值,則GetName方法可保證它將返回其中一個(gè)枚舉成員的名稱。但是,它并不保證它將始終返回相同枚舉成員的名稱。因此,如果多個(gè)枚舉成員具有相

14、同的值,應(yīng)用程序代碼決不應(yīng)依賴于返回特定成員名稱的方法。注意其傳入的參數(shù)值必須是枚舉的枚舉基或基礎(chǔ)類型。6)Enum.GetNames方法該方法用于獲取一個(gè)指定枚舉中常數(shù)名稱的數(shù)組。返回值數(shù)組的元素按枚舉常量的值排序。如果存在具有相同值的枚舉常量,則不指定其相應(yīng)名稱的順序。例如:usingSystem;enumDaysSunday=1,Monday,Tuesday,Wednesday,Thursday,Friday,SaturdaypublicclassExamplepublicstaticvoidMain()foreach(stringsinEnum.GetNames(typeof(Days

15、)Console.WriteLine(s);Console.Read();說明:以上均是Enum類型經(jīng)常用到的方法,其中Enum.Pars*法最是經(jīng)常用到。4.枚舉類型在VS2010中的一些現(xiàn)象1) VS2010中同一個(gè)枚舉類型中如果有相同的枚舉成員不報(bào)錯(cuò),如:enumDaysSunday,Sunday,Tuesday,Wednesday,Thursday,Friday,Saturday但是在調(diào)用枚舉成員是提示錯(cuò)誤。2) VS2010中對(duì)于枚舉成員的常數(shù)值在該枚舉的基礎(chǔ)類型的范圍之外時(shí)不報(bào)錯(cuò)。如:enumDays:uintSunday=-1,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday但是在調(diào)試時(shí)提示錯(cuò)誤。3) VS2010中對(duì)于同一個(gè)枚舉成員同時(shí)出現(xiàn)在

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論