溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#的枚舉與位枚舉怎么定義

發(fā)布時間:2022-02-16 09:22:20 來源:億速云 閱讀:185 作者:iii 欄目:開發(fā)技術

這篇文章主要介紹了C#的枚舉與位枚舉怎么定義的相關知識,內(nèi)容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇C#的枚舉與位枚舉怎么定義文章都會有所收獲,下面我們一起來看看吧。

C#的枚舉與位枚舉怎么定義

一、枚舉的概念

C# 枚舉(Enum), 枚舉類型是用于聲明一組命名的常數(shù)的基本數(shù)據(jù)類型(值類型)

二、枚舉的定義

聲明 enum 變量:

enum  {enumeration list};

其中 enum_name 指定枚舉的類型名稱,enumeration list 是一個用逗號分隔的標識符列表; 枚舉列表中的每個符號代表一個整數(shù)值,一個比他前面的符號大的整數(shù)值。默認情況下,第一個枚舉符號的值是 0。例如:

enum Days {Sun , Mon, tue, Fir, sat };

三、枚舉的案例,枚舉變量的用法

實例

using System;
namespace EnumApplication
{
   class EnumProgram
   {
         enum Days { Sun, Mon, tue, Wed, thu, Fri, sat };
       
         static void Main(string[] args)
         {
               int WeekdayStart = (int)Days.Mon;
               int WeekdayEnd = (int)Days.Fir;
               Console.WriteLine("Monday:{0}",WeekdayStart);  
               Console.WriteLine("Firday:{0}",WeekdayEnd );  
               Console.ReadKey();
         }    
   }
}

四、Enum 類:

所有枚舉類型都隱式地繼承 System.Enum 類型, System.Enum 類型是繼承自 System.ValueType 類型唯一不為值類型的引用類型。

  C#的枚舉與位枚舉怎么定義

五、Enum 類

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

六、標志枚舉/位枚舉

C# 標記枚舉(Flags):枚舉類型是用于聲明一組命名得常數(shù)得基本類型數(shù)據(jù)(值類型)。

枚舉值是互斥得。而位標記集合是一種由組合出現(xiàn)得元素形成得列表,通常設計為以”位或”運算組合新值。

枚舉類型則通常表達一種語義相對獨立得數(shù)值集合。而以枚舉類型來實現(xiàn)位標記集合是最完美得組合,簡稱位枚舉。

七、位枚舉得定義

///
  /// 權限枚舉
  ///
  [Flags]
  public enum permission                     注意加了[Flags]特性后有三種寫法,
  {                                  一種是使用

八、位枚舉的實例

//1、給用戶創(chuàng)建、讀取,修改和刪除的權限
var parmission = Permission.Create | parmission.Read | parmission.Update | parmission.Delete;

//2、去掉用戶的修改和刪除權限
parmission = parmission &~parmission.Update;
parmission = parmission &~parmission.Delete;

//3、給用戶加上修改的權限
parmission = parmission | parmission.Update;

//4、判斷用戶是否有創(chuàng)建的權限
var isCreate = (parmission & parmission.Create)!=0;
//或者
var isCreate = (parmission & parmission.Create)==parmission.Create;
  這時parmission枚舉的值將變成0+1+4=5,它的ToSting()將變成“parmission.Create,
  parmission.Read”,parmission.Update; 這里我們可以解釋為什么第五個值Delete是8而不能成為5。
  也就是說它的值不應該是前幾項值的復合值。一個比較簡單的方法
  就是用2的n次方來依次位每一項賦值,例如:1,2,4,8,16,32,64.......。

關于“C#的枚舉與位枚舉怎么定義”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“C#的枚舉與位枚舉怎么定義”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI