欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

詳解c#枚舉

小編這次要給大家分享的是詳解c# 枚舉,文章內(nèi)容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。

碧江網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),碧江網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為碧江近1000家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的碧江做網(wǎng)站的公司定做!

一、在學(xué)習(xí)枚舉之前,首先來聽聽枚舉的優(yōu)點(diǎn)。

1、枚舉能夠使代碼更加清晰,它允許使用描述性的名稱表示整數(shù)值。

2、枚舉使代碼更易于維護(hù),有助于確保給變量指定合法的、期望的值。

3、枚舉使代碼更易輸入。

二、枚舉說明

1、簡單枚舉

(1)枚舉使用enum關(guān)鍵字來聲明,與類同級。枚舉本身可以有修飾符,但枚舉的成員始終是公共的,不能有訪問修飾符。枚舉本身的修飾符僅能使用public和internal。

(2)枚舉是值類型,隱式繼承自System.Enum,不能手動修改。System.Enum本身是引用類型,繼承自System.ValueType。

(3)枚舉都是隱式密封的,不允許作為基類派生子類。

(4)枚舉類型的枚舉成員均為靜態(tài),且默認(rèn)為Int32類型。

(5)每個枚舉成員均具有相關(guān)聯(lián)的常數(shù)值。此值的類型就是枚舉的底層數(shù)據(jù)類型。每個枚舉成員的常數(shù)值必須在該枚舉的底層數(shù)據(jù)類型的范圍之內(nèi)。如果沒有明確指定底層數(shù)據(jù)類型則默認(rèn)的數(shù)據(jù)類型是int類型。

(6)枚舉成員不能相同,但枚舉的值可以相同。

(7)枚舉最后一個成員的逗號和大括號后面的分號可以省略

C#提供類一個類來方便操作枚舉,下面給出這個類的常用方法:

方法名稱
CompareTo將此實(shí)例與指定對象進(jìn)行比較并返回一個對二者的相對值的指示
Equals指示此實(shí)例是否等于指定的對象
Format根據(jù)指定格式將指定枚舉類型的指定值轉(zhuǎn)換為其等效的字符串表示形式
GetName在指定枚舉中檢索具有指定值的常數(shù)的名稱
GetNames檢索指定枚舉中常數(shù)名稱的數(shù)組
GetTypeCode 返回此實(shí)例的基礎(chǔ) TypeCode
GetUnderlyingType返回指定枚舉的基礎(chǔ)類型
GetValues索指定枚舉中常數(shù)值的數(shù)組
HasFlag確定當(dāng)前實(shí)例中是否設(shè)置了一個或多個位域
IsDefined返回指定枚舉中是否存在具有指定值的常數(shù)的指示
Parse將一個或多個枚舉常數(shù)的名稱或數(shù)字值的字符串表示轉(zhuǎn)換成等效的枚舉對象。 一個參數(shù)指定該操作是否不區(qū)分大小寫
TryParse將一個或多個枚舉常數(shù)的名稱或數(shù)字值的字符串表示轉(zhuǎn)換成等效的枚舉對象。 用于指示轉(zhuǎn)換是否成功的返回值

要顯示指定枚舉的底層數(shù)據(jù)類型很簡單,只需在聲明枚舉的時候加個冒號,后面緊跟要指定的數(shù)據(jù)類型。

 enum sex : byte  //顯示指定枚舉的底層數(shù)據(jù)類型
 { 
  male,
  female,  //此逗號可以省略
 };       //此分號可以省略

顯式設(shè)置枚舉的成員常量值,默認(rèn)是從0開始,逐個遞增的。但是以下例子卻設(shè)置成了1,2,3,4,5,6,7,0。而且成員值可以一樣的。

enum Week
 { 
  Monday = 1,
  Tuesday = 2,
  Wednesday = 3,
  Sunday = 0,
     Everyday = 1  //成員的值可以設(shè)置成一樣的,但是成員不行
 }
  Console.WriteLine((int)Week.Monday);  //獲取值

示例,由枚舉值獲取枚舉名稱與由枚舉名稱獲取枚舉值

class Program
 {
  static void Main(string[] args)
  {
   Console.WriteLine(Enum.GetName(typeof(Man),1)); //還是 劉備 (由值獲取名字)

   string[] array1 = Enum.GetNames(typeof(Man));
   Console.WriteLine(array1[1]); //關(guān)羽

   Array array2 = Enum.GetValues(typeof(Man));
   Console.WriteLine(array2.GetValue(1)); //還是關(guān)羽

   Type t = Enum.GetUnderlyingType(typeof(Man));
   Console.WriteLine(t);  //輸出 Int32

   //由值獲取內(nèi)容
   int i = 1;
   string Name = Enum.Parse(typeof(Man), i.ToString()).ToString();  //此時 Name="劉備"
   Console.WriteLine(Name);

   //由值獲取內(nèi)容
   string Name2 = "關(guān)羽";
   int j = Convert.ToInt32(Enum.Parse(typeof(Man), Name2));  //此時 j=2
   Console.WriteLine(j);

   Console.ReadKey();
  }
 }

 enum Man
 { 
  劉備 = 1,
  關(guān)羽 = 2,
  張飛 = 3
 }

2、標(biāo)志枚舉

標(biāo)志枚舉要在頂部加[System.Flags]特性進(jìn)行聲明。而且枚舉支持組合運(yùn)算。先來看個例子

class Program
 {
  static void Main(string[] args)
  {
   var man = Week.白 | Week.美; //賦值為101 計(jì)算方法001或上100,結(jié)果是101
   Console.WriteLine((int)man);
   if ((man & Week.白) == Week.白)  //101 man 
   {         //001 白 逐位相與,
    Console.WriteLine("此人白");  //001 如果結(jié)果是白,就可以反推出man包含 白
   }
   else
   {
    Console.WriteLine("此人黑");
   }
   Console.ReadKey();
  }
 }

 [System.Flags]
 public enum Week
 { 
  白 = 1, //001
  富 = 2, //010
  美 = 4, //100
 }

這種位運(yùn)算是非常有用的,在sql語句里也支持位運(yùn)算。也就是說,把一個枚舉運(yùn)算后的結(jié)果存入數(shù)據(jù)庫之后,還能夠按照你的要求讀取出來。比如:

將一個"白美"存如數(shù)據(jù)庫的值存入數(shù)據(jù)庫,那么存入去的就是整型5。

那么我想讀出所有的"白"數(shù)據(jù)列表怎么讀呢?白,可以是純白"1",也是是白富3,可以是白美5,也可以是白富美7,你可以用in來讀,但是更好的方法是在sql語句中同樣使用位運(yùn)算。

select * from Table1 where Tag & 1 = 1  //Tag是列名

select * from Table1 where Tag | 1 = Tag

三、枚舉的使用建議

當(dāng)參數(shù)、返回值、變量等類型可以使枚舉,盡量使用枚舉(要注意考慮分類的穩(wěn)定性)

大多數(shù)情況下都可以使用int類型枚舉,下列情況除外。

枚舉可能被大量頻繁的使用,這時為了節(jié)約空間可以使用小于int類型的枚舉。

標(biāo)志枚舉,且標(biāo)志多于32個。

下面寫一個:枚舉綁定MVC3下拉列表的示例:

控制器代碼:

namespace MvcStart.Controllers
{
 public class HomeController : Controller
 {
  public ActionResult GetSexList()
  {
   Dictionary<string, int> Sexlist = new Dictionary<string, int>();
   string[] keys = Enum.GetNames(typeof(sex));
   Array values = Enum.GetValues(typeof(sex));

   for (int i = 0; i < keys.Length; i++)
   {
    Sexlist.Add(keys[i], (int)values.GetValue(i));
   }

   return View(Sexlist);
  }
 }

 public enum sex
 { 
  male = 1,
  female = 2,
  other = 3
 }
}

視圖代碼:

@model Dictionary<string, int>
<select>
 @foreach(var item in @Model)
 {
  <option value="@item.Value">@item.Key</option>
 }
</select>

生成的HTML代碼:

<select>
  <option value="1">male</option>
  <option value="2">female</option>
  <option value="3">other</option>
</select>

再來一個例子,獲取枚舉描述

public static class GetDescription
 {
  /// <summary>
  /// 獲取描述信息
  /// </summary>
  /// <param name="en"></param>
  /// <returns></returns>
  public static string description(this Enum en)
  {
   Type type = en.GetType();
   MemberInfo[] memInfo = type.GetMember(en.ToString());
   if (memInfo != null && memInfo.Length > 0)
   {
    object[] attrs = memInfo[0].GetCustomAttributes(typeof(System.ComponentModel.DescriptionAttribute), false);
    if (attrs != null && attrs.Length > 0)
     return ((DescriptionAttribute)attrs[0]).Description;
   }
   return en.ToString();
  }
 }

 public enum Sex
 {
  [Description("男")]
  man = 1,
  [Description("女")]
  woman = 2,
  [Description("其他")]
  other = 3
 }

看完這篇關(guān)于詳解c# 枚舉的文章,如果覺得文章內(nèi)容寫得不錯的話,可以把它分享出去給更多人看到。

分享標(biāo)題:詳解c#枚舉
瀏覽地址:http://aaarwkj.com/article18/pegddp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、面包屑導(dǎo)航、小程序開發(fā)、服務(wù)器托管、Google、企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管
一区二区尤物区亚洲国产精品区| 日韩成人三级一区二区| 91日韩中文字幕在线观看| 欧美日韩免费爱爱视频| 综合资源网日韩天天操| 日韩有码大片最新自拍| 在线观看中文字幕一区| 国产欧美日韩精品国产| 一区三区精品久久久精品| 欧美偷拍一区二区三区| 99久久夜国产精品| 91麻豆精品一二三区在线| 国产三级国产精品国产| 青青草原这里只有精品| 中字幕人妻一区二区三区| 日本黄色免费在线观看网站| 福利av一区二区三区| 午夜福利一区二区在线| av亚洲天堂免费观看| 亚洲国产免费一区二区| 中文字幕精品一区二区三区在线 | 九九热精品在线观看视频| 天天操时时操夜夜操| 日韩精品在线观看天堂| 国产精品精品久久久久久| 一本久道久久综合久久鬼色| 中国女人内射91熟女| 日本一级a级黄免视频| 久久久精品国产亚洲av网黑人| 亚洲成av人片一区二久久精品| 在线观看青青草原免费| 亚洲欧美日韩颜射极品| 国产又粗又硬又长又爽在线观看| 亚洲青青草原一区二区| 欧美日韩国产在线91| 欧美人妻精品一区二区| 国产91九色在线播放| av在线视频男人的天堂| 欧美日韩综合精品无人区| 欧美高清一区二区在线播放| 日韩国产精品视频二区|