網站首頁 編程語言 正文
一、概述
定義一個值類型,其中包含固定值集合。枚舉類型變量可以是此集合中的任意一個或多個值。
枚舉使用enum關鍵字來聲明,與類同級。
枚舉本身可以有修飾符,但枚舉的成員始終是公共的,不能有訪問修飾符。枚舉本身的修飾符僅能使用public和internal。
二、常數枚舉
1、定義枚舉類型
顯式指定枚舉的底層數據類型,如果沒有明確指定底層數據類型則默認的數據類型是int類型。
enum sex : byte //顯示指定枚舉的底層數據類型
{
male,
female, //此逗號可以省略
}; //此分號可以省略
顯式設置枚舉的成員常量值,默認是從0開始,逐個遞增的。但是以下例子卻設置成了1,2,3,40,1。而且成員值可以一樣的。
void Main()
{
Console.WriteLine((int)Week.Monday); //獲取值
}
enum Week
{
Monday = 1,
Tuesday = 2,
Wednesday = 3,
Sunday = 0,
Everyday = 1 //成員的值可以設置成一樣的,但是成員不行
}
2、聲明枚舉變量并初始化
Color myColor=Color.White;
Color myColor=(Color)1;//由值轉成枚舉成員
Color myColor=(Color)Enum.Parse(typeof(Color), "White"); //將字符串解析成枚舉成員
3、枚舉變量的使用
Color myColor = Color.White;
string Name = myColor.ToString();
int intName = (int)myColor;//或Convert.ToInt32(myColor)
string Name1 = Enum.GetName(typeof(Color), 1); //由值獲取名
4、循環枚舉
Dictionary<string, int> Colorlist = new Dictionary<string, int>();
string[] keys = Enum.GetNames(typeof(Color));
Array values = Enum.GetValues(typeof(Color));
for (int i = 0; i < keys.Length; i++)
{
Colorlist.Add(keys[i], (int)values.GetValue(i));
}
應用:
//填充comboBox
comboBox1.DataSource = Enum.GetValues(typeof(Color));
Color value = (Color)comboBox1.SelectedValue;
//Grid的列數據
DataGridViewComboBoxColumn col = new DataGridViewComboBoxColumn();
col.Name = "My Enum Column";
col.DataSource = Enum.GetValues(typeof(Color));
col.ValueType = typeof(Color);
dataGridView1.Columns.Add(col);
三、位域枚舉
位域通常用于由可組合出現的元素組成的列表,位域設計為通過按位“或”運算組合來生成未命名的值,而枚舉常數則不是。
位域通常用 2 的冪(即 1、2、4、8 、16等2的幾次方)定義枚舉常量。這意味著組合的枚舉常量中的各個標志都不重疊。
1、定義枚舉類型
[Flags] //Flags屬性表示此枚舉為位域枚舉
enum Color
{
None = 0,
Red = 1,
White = 2,
Blue = 4,
Black = 8
}
2、聲明枚舉變量并初始化
Color myColor=Color.Red | Color.White|Color.Blue;//”|”表示相并
Color myColor = (Color)3;//由值轉成枚舉成員,Red, White
Color myColor = (Color)Enum.Parse(typeof(Color), "White,Blue"); //將字符串解析成枚舉成員,White, Blue
3、枚舉變量的使用
Color myColor = Color.Red | Color.White | Color.Blue;
string Name = myColor.ToString();//Red,White,Blue
int intName = (int)myColor;//或Convert.ToInt32(myColor),7
string Name2 = Enum.GetName(typeof(Color), 2);//由值獲取名,White
4、位域枚舉特殊操作
1、判斷枚舉變量是否包含在某個或某些枚舉項:
if(myColor & Color.Red)==Color.Red){}//”&”表示相交,判斷是否包含Color.Red
if(myColor & Color.Red)!=0){}
2、從枚舉變量中去除某個或某些枚舉項:
myColor=myColor&(~(Color.Red | Color.White ))//”~”表示取反,出去Color.Red | Color.White兩項。
或者
myColor=myColor^(Color.Red | Color.White )//”^”表示異或,不同為真,相同為假。
3、判斷美劇變量是否等于某個或某些枚舉項:
if((myColor | Color.Write)==Color.Write)//判斷是否只有白色。
原文鏈接:https://www.cnblogs.com/springsnow/p/9428501.html
相關推薦
- 2022-10-11 C++函數對象Functor與匿名函數對象Lambda表達式詳解_C 語言
- 2023-12-13 記錄choice函數用法
- 2023-07-09 echarts飄警告[ECharts] There is a chart instance alre
- 2022-09-25 統一管理 Activity 便于隨時退出程序
- 2022-08-23 python多線程對多核cpu的利用解析_python
- 2022-01-16 ES6新增聲明格式、變量解構賦值及模板字符串
- 2022-08-15 apollo配置中心的client端分析
- 2023-03-11 C/C++?-?從代碼到可執行程序的過程詳解_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支