日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
C#枚舉類型概念及應(yīng)用淺析

C#枚舉類型(也稱為枚舉)為定義一組可以賦給變量的命名整數(shù)常量提供了一種有效的方法。例如,假設(shè)您必須定義一個(gè)變量,該變量的值表示一周中的一天。該變量只能存儲(chǔ)七個(gè)有意義的值。若要定義這些值,可以使用枚舉類型。枚舉類型是使用 enum 關(guān)鍵字聲明的。

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了保山免費(fèi)建站歡迎大家使用!

 
 
 
  1. enum Days { Sunday, Monday, Tuesday,   
  2. Wednesday, Thursday, Friday, Saturday };  
  3. enum Months : byte { Jan, Feb, Mar, Apr,  
  4.  May, Jun, Jul, Aug, Sep, Oct, Nov, Dec };  

默認(rèn)情況下,枚舉中每個(gè)元素的基礎(chǔ)類型是 int??梢允褂妹疤?hào)指定另一種整數(shù)值類型,如前面的示例所示。以下是使用枚舉而不使用數(shù)值類型的好處:

明確為客戶端代碼指定哪些值是變量的有效值。

在 Visual Studio 中,IntelliSense 列出定義的值。

如果不為枚舉數(shù)列表中的元素指定值,則它們的值將以 1 為增量自動(dòng)遞增。在前面的示例中,Days.Sunday 的值為 0,Days.Monday 的值為 1,依此類推。創(chuàng)建新的 Days 對(duì)象時(shí),如果不顯式為其賦值,則它將具有默認(rèn)值 Days.Sunday (0)。創(chuàng)建枚舉時(shí),應(yīng)選擇最合理的默認(rèn)值并賦給它一個(gè)零值。這便使得只要在創(chuàng)建枚舉時(shí)未為其顯式賦值,則所創(chuàng)建的全部枚舉都將具有該默認(rèn)值。

如果變量 meetingDay 的類型為 Days,則只能將 Days 定義的某個(gè)值賦給它(無(wú)需顯式強(qiáng)制轉(zhuǎn)換)。如果會(huì)議日期更改,可以將 Days 中的新值賦給 meetingDay:

 
 
 
  1. Days meetingDay = Days.Monday;  
  2. //...  
  3. meetingDay = Days.Friday; 

C#枚舉類型說(shuō)明:
 
可以將任意整數(shù)值賦給 meetingDay。例如,代碼行 meetingDay = (Days) 42 不會(huì)產(chǎn)生錯(cuò)誤。但也不應(yīng)該這樣做,因?yàn)槟J(rèn)約定的是枚舉變量只容納枚舉定義的值之一。將任意值賦給枚舉類型的變量很有可能會(huì)導(dǎo)致錯(cuò)誤。

可以將任意值賦給枚舉類型的枚舉數(shù)列表中的元素,也可以使用計(jì)算值:

 
 
 
  1. enum MachineState  
  2. {  
  3. PowerOff = 0,  
  4. Running = 5,  
  5. Sleeping = 10,  
  6. Hibernating = Sleeping + 5  

C#枚舉類型作為位標(biāo)志

可以使用C#枚舉類型定義位標(biāo)志,從而使該C#枚舉類型的實(shí)例可以存儲(chǔ)枚舉數(shù)列表中定義的值的任意組合。(當(dāng)然,某些組合在您的程序代碼中可能沒有意義或不允許使用。)

創(chuàng)建位標(biāo)志枚舉的方法是應(yīng)用 System..::.FlagsAttribute 屬性并適當(dāng)定義一些值,以便可以對(duì)這些值執(zhí)行 AND、OR、NOT 和 XOR 按位運(yùn)算。在位標(biāo)志枚舉中包含一個(gè)值為零(表示“未設(shè)置任何標(biāo)志”)的命名常量。如果零值不表示“未設(shè)置任何標(biāo)志”,則請(qǐng)不要為標(biāo)志指定零值。

在下面的示例中,定義了 Days 枚舉的另一個(gè)版本,即 Days2。Days2 具有 Flags 屬性,且它的每個(gè)值都是 2 的若干次冪,指數(shù)依次遞增。這樣您就可以創(chuàng)建值為 Days2.Tuesday 和 Days2.Thursday 的 Days2 變量。

 
 
 
  1. [Flags]  
  2. enum Days2  
  3. {  
  4. None = 0x0,  
  5. Sunday = 0x1,  
  6. Monday = 0x2,  
  7. Tuesday = 0x4,  
  8. Wednesday = 0x8,  
  9. Thursday = 0x10,  
  10. Friday = 0x20,  
  11. Saturday = 0x40  
  12. }  
  13. class MyClass  
  14. {  
  15. Days2 meetingDays = Days2.Tuesday | Days2.Thursday;  

C#枚舉類型的問題:若要在某個(gè)枚舉上設(shè)置標(biāo)志,請(qǐng)使用邏輯 OR 運(yùn)算符,如下面的示例所示:

 
 
 
  1. // Initialize with two flags using bitwise OR.  
  2. meetingDays = Days2.Tuesday | Days2.Thursday;  
  3. // Set an additional flag using bitwise OR.  
  4. meetingDays = meetingDays | Days2.Friday;  
  5. Console.WriteLine("Meeting days are {0}", meetingDays);  
  6. // Output: Meeting days are Tuesday, Thursday, Friday  
  7. // Remove a flag using bitwise XOR.  
  8. meetingDays = meetingDays ^ Days2.Tuesday;  
  9. Console.WriteLine("Meeting days are {0}", meetingDays);  
  10. // Output: Meeting days are Thursday, Friday 

若要確定是否設(shè)置了特定標(biāo)志,請(qǐng)使用邏輯 AND 運(yùn)算,如下面的示例所示:

 
 
 
  1. // Test value of flags using bitwise AND.  
  2. bool test = (meetingDays & Days2.Thursday) == Days2.Thursday;  
  3. Console.WriteLine("Thursday {0} a meeting day.",  
  4.  test == true ? "is" : "is not");  
  5. // Output: Thursday is a meeting day. 

有關(guān)使用System..::.FlagsAttribute 屬性定義枚舉類型時(shí)需要考慮的事項(xiàng)的更多信息,請(qǐng)參見System..::.Enum。

使用 System.Enum 方法發(fā)現(xiàn)和操作枚舉值

所有枚舉都是System..::.Enum 類型的實(shí)例。不能從System..::.Enum 派生新類,但可以使用它的方法發(fā)現(xiàn)有關(guān)枚舉實(shí)例中的值的信息以及操作這些值。

 
 
 
  1. string s = Enum.GetName(typeof(Days), 4);  
  2. Console.WriteLine(s);  
  3. Console.WriteLine("The values of the Days Enum are:");  
  4. foreach (int i in Enum.GetValues(typeof(Days)))  
  5. Console.WriteLine(i);  
  6. Console.WriteLine("The names of the Days Enum are:");  
  7. foreach (string str in Enum.GetNames(typeof(Days)))  
  8. Console.WriteLine(str); 

C#枚舉類型概念及應(yīng)用的基本內(nèi)容就向你介紹到這里,希望對(duì)你了解和學(xué)習(xí)C#枚舉類型概念及應(yīng)用有所幫助。


網(wǎng)站標(biāo)題:C#枚舉類型概念及應(yīng)用淺析
分享地址:http://www.dlmjj.cn/article/dpjdigg.html