CLR via C 列舉型別和位標誌

2021-10-05 18:03:59 字數 1268 閱讀 4716

列舉型別:具有以下特性:

1.c#中列舉型別繼承自基礎型別(byte,sbyte,short,ushort,int(預設),uint,long,ulong) ,但是il中列舉型別繼承自system.enum,並且內部定義了一組常量欄位和乙個例項字段。其中常量欄位的型別為列舉型別,常量欄位名稱為符號名稱,常量字段值為16進製制基礎型別值;例項字段型別為基礎型別,例項欄位名稱為value__。參考**如下所示:

// 定義列舉型別

public

enum color :

long

// 對應的真實結構如下所示:

public

struct color : system.enum

2.getunderlyingtype函式可以用來獲取列舉型別的基礎型別。

3.tostring函式可以使用指定格式和語言文化將列舉例項轉換成字串。

4.format函式可以使用指定格式將指定引數值對應的列舉例項轉換成字串。

5.getvalues函式可以用來獲取列舉例項陣列。其中可以結合泛型來封裝該函式,從而提高型別安全。**如下所示:

public

static tenum[

]getenumvalues

<

tenum

>()

where tenum :

struct

6.getname函式可以用來獲取指定常量字段值對應的常量欄位名稱。

7.getnames函式可以用來獲取列舉型別中常量欄位名稱陣列。

8. parse / tryparse / toobjec函式可以用來獲取指定引數值(常量欄位名稱或者常量字段值)的列舉例項。

9. isdefined函式可以用來判斷指定引數值在列舉型別中是否合法。由於該函式內部會以反射的方式區分大小寫查詢,所以應該慎用該函式。

10.hasflag函式用來判定列舉例項中是否有指定的位域。由於會發生裝箱操作,所以該函式要慎用。

11.列舉型別裡面不能定義函式,但是可以利用擴充套件函式機制來模擬向列舉型別裡面新增函式。

位標誌:列舉的常量字段值使用進製位來表示。具有以下特性:

1.列舉型別加上flagattribute時,列舉函式中查詢列舉例項相關的引數會被認為是一組位標誌引數。

2.列舉函式中使用格式"f"時,查詢列舉例項相關的引數如果都能被匹配的話就會返回對應的常量欄位名稱;否則就會返回沒有匹配的引數值部分。

CLR via C 15 列舉型別和位標誌

原文 clr via c 15.列舉型別和位標誌 一 列舉型別 列舉型別 enumerated types 定義了一組 符號名稱 值 配對。例如,以下color型別定義了一組符號,每個符號都標識一種顏色 internal enum color 使用列舉型別的好處 1 列舉型別使程式更容易編寫 閱讀和...

第15章 列舉型別和位標誌

enumeration提供了一些非常炫酷的功能,相信大多數開發人員都不熟悉。這些新功能極大的簡化了應用程式開發。列舉型別 enumerated types 定義了一組 符號名稱 值 配對。以下color型別定義了一組符號,每個符號都標識一種顏色 internal enum color white,賦...

第十五章 列舉型別和位標誌

目錄 15.1 列舉型別和位標誌 15.2 位標誌 15.3 向列舉型別新增方法 列舉型別定義了一組 符號名稱 值 配對。列舉型別使程式更容易編寫,閱讀和維護。列舉型別時強型別的。列舉型別從system.enum派生,是值型別,可用未裝箱和已裝箱的形式來表示。但不能定義任何方法,屬性或事件。可利用c...