欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C# 枚舉的使用簡介

 更新時間:2021年03月13日 11:27:18   作者:熊澤-學習中的苦與樂  
這篇文章主要介紹了C# 枚舉的簡單使用,幫助大家更好的理解和學習使用c#,感興趣的朋友可以了解下

枚舉這個名詞大家都聽過,很多小伙伴也使用過,

那么枚舉在開發(fā)中能做什么,使用它后能給程序代碼帶來什么改變,為什么用枚舉。

各位看官且坐下,聽我一一道來。

為什么使用枚舉?

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

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

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

枚舉有哪些用法?

1、簡單枚舉

2、標志枚舉

1、簡單枚舉

  • 枚舉使用enum關(guān)鍵字來聲明,與類同級。枚舉本身可以有修飾符,但枚舉的成員始終是公共的,不能有訪問修飾符。枚舉本身的修飾符僅能使用public和internal。
  • 枚舉是值類型,隱式繼承自System.Enum,不能手動修改。System.Enum本身是引用類型,繼承自System.ValueType。
  • 枚舉都是隱式密封的,不允許作為基類派生子類。
  • 枚舉類型的枚舉成員均為靜態(tài),且默認為Int32類型。
  • 每個枚舉成員均具有相關(guān)聯(lián)的常數(shù)值。此值的類型就是枚舉的底層數(shù)據(jù)類型。每個枚舉成員的常數(shù)值必須在該枚舉的底層數(shù)據(jù)類型的范圍之內(nèi)。如果沒有明確指定底層數(shù)據(jù)類型則默認的數(shù)據(jù)類型是int類型。
  • 枚舉成員不能相同,但枚舉的值可以相同。
  • 枚舉最后一個成員的逗號和大括號后面的分號可以省略

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

C#枚舉常用方法

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

將一個或多個枚舉常數(shù)的名稱或數(shù)字值的字符串表示轉(zhuǎn)換成等效的枚舉對象。 一個參數(shù)指定該操作是否不區(qū)分大小寫

TryParse

將一個或多個枚舉常數(shù)的名稱或數(shù)字值的字符串表示轉(zhuǎn)換成等效的枚舉對象。 用于指示轉(zhuǎn)換是否成功的返回值

如果要顯示指定枚舉的底層數(shù)據(jù)類型很簡單,只需在聲明枚舉的時候加個冒號,后面緊跟要指定的數(shù)據(jù)類型(可指定類型有:byte、sbyte、short、ushort、int、uint、long、ulong)。

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

如下示例:由枚舉值獲取枚舉名稱與由枚舉名稱獲取枚舉值

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace enumApplication
{
 class Program
 {
 static void Main(string[] args)
 {
  //輸出方式一:
  Console.WriteLine("我是四大名著之一的:" + Enum.GetName(typeof(Man), 1)); //西游記(是哪個名著由值獲?。?

  //輸出方式二:
  string[] array1 = Enum.GetNames(typeof(Man));
  Console.WriteLine("我是四大名著之一的:" + array1[2]); //紅樓夢(是哪個名著由值獲取)

  //輸出方式三:
  Array array2 = Enum.GetValues(typeof(Man));
  Console.WriteLine("我是四大名著之一的:" + array2.GetValue(3)); //三國演義(是哪個名著由值獲?。?

  //輸出方式四:
  Type t = Enum.GetUnderlyingType(typeof(Man));
  Console.WriteLine("我輸出的是值類型:"+t); //輸出 Int32

  //輸出方式五:由值獲取內(nèi)容
  int i = 0;
  string Name = Enum.Parse(typeof(Man), i.ToString()).ToString(); //此時 Name="水滸傳"
  Console.WriteLine("我是四大名著之一的:" + Name);

  //輸出方式六:由值獲取內(nèi)容
  string Name2 = "紅樓夢";
  int j = Convert.ToInt32(Enum.Parse(typeof(Man), Name2)); //此時 j=2
  Console.WriteLine("我是《紅樓夢》對應(yīng)的值序號:"+j);

  Console.ReadKey();
 }
 enum Man:int //四大名著枚舉
 {
  西游記 = 1,
  紅樓夢 = 2,
  三國演義 = 3,
  水滸傳 = 0
 }
 }
}

2、標志枚舉

標志枚舉要在頂部加[System.Flags]特性進行聲明。而且枚舉支持組合運算。

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

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

select * from Table where Column & 1 = 1  //Column 是列名

select * from Table1 where Column  | 1 = Column 

如下demo:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace enumApplication
{
 class Program
 {
 static void Main(string[] args)
 {
  var man = People.高 | People.帥; //賦值為101 計算方法001或上100,結(jié)果是101
  Console.WriteLine("高和帥的枚舉值和為:"+(int)man);
  if ((man & People.高) == People.高) //101 man 
  {     //001 高 逐位相與,
  Console.WriteLine("此人:高"); //001 如果結(jié)果是高,就可以反推出man包含 高
  }
  else
  {
  Console.WriteLine("此人:矮");
  }
  Console.ReadKey();
 }

 [System.Flags]
 public enum People:int 
 {
  高 = 1, //001
  富 = 2, //010
  帥 = 4, //100
 }
 }
}

3、枚舉使用的一些建議

  • 作為參數(shù)、返回值、變量等類型可以使枚舉,盡量使用枚舉(要注意考慮分類的穩(wěn)定性)
  • 大多數(shù)情況下都可以使用int類型枚舉,下列情況除外。
  • 枚舉可能被大量頻繁的使用,這時為了節(jié)約空間可以使用小于int類型的枚舉。
  • 標志枚舉,且標志多于32個。 

枚舉用好了還是蠻方便的,大家不妨去試試。

以上就是C# 枚舉的使用簡介的詳細內(nèi)容,更多關(guān)于C# 枚舉的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Unity3D實現(xiàn)描邊框效果

    Unity3D實現(xiàn)描邊框效果

    這篇文章主要為大家詳細介紹了Unity3D實現(xiàn)描邊框效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C#關(guān)鍵字之重寫override介紹

    C#關(guān)鍵字之重寫override介紹

    這篇文章介紹了C#關(guān)鍵字之重寫override,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • C# 中對象序列化XML的方法

    C# 中對象序列化XML的方法

    這篇文章主要介紹了C# 中對象序列化XML的方法,幫助大家更好的理解和學習使用c#,感興趣的朋友可以了解下
    2021-03-03
  • c#添加Newtonsoft.Json包的操作

    c#添加Newtonsoft.Json包的操作

    這篇文章主要介紹了c#添加Newtonsoft.Json包的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • C#查找素數(shù)實現(xiàn)方法

    C#查找素數(shù)實現(xiàn)方法

    這篇文章主要介紹了C#查找素數(shù)實現(xiàn)方法,程序中有很多使用的功能模塊,非常適合C#初學者學習借鑒,需要的朋友可以參考下
    2014-08-08
  • C# dump系統(tǒng)lsass內(nèi)存和sam注冊表詳細

    C# dump系統(tǒng)lsass內(nèi)存和sam注冊表詳細

    這篇文章主要介紹了C# dump系統(tǒng)lsass內(nèi)存和sam注冊表,在這里選擇 C# 的好處是體積小,結(jié)合 loadAssembly 方便免殺,希望對讀者們有所幫助
    2021-09-09
  • C# Autofac的具體使用

    C# Autofac的具體使用

    Autofac是.NET領(lǐng)域最為流行的IoC框架之一,本文主要介紹了C# Autofac的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-08-08
  • C#?RichTextBox制作文本編輯器

    C#?RichTextBox制作文本編輯器

    這篇文章主要為大家詳細介紹了C#?RichTextBox制作文本編輯器的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • Unity實現(xiàn)游戲存檔框架

    Unity實現(xiàn)游戲存檔框架

    這篇文章主要為大家詳細介紹了Unity實現(xiàn)游戲存檔框架,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-01-01
  • 一步步教你如何創(chuàng)建第一個C#項目

    一步步教你如何創(chuàng)建第一個C#項目

    這篇文章主要給大家介紹了關(guān)于如何創(chuàng)建第一個C#項目的相關(guān)資料,文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2022-12-12

最新評論