C# enum枚举类型学习

2,830 阅读9分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第1天,点击查看活动详情

前言

今天我们来学习一下enum枚举类型,我们知道很多时候,我们对于星期,月份,时间这种数据,完全可以用枚举类型去定义,这样可以方便我们对数据处理,不需要二次处理,比如我们把一周7天去定义,我们把初识值设为1,1就代表星期一,我们在C#中展示时是非常方便的,今天这篇文章就来学习一下吧。创作不易,大家顺便点点赞吧,你的点赞收藏关注,是我写文章的动力,栓Q啦。

haoping21111.gif

注意

枚举是一组命名常量,其基础类型是任何整型类型。 如果未显式声明基础类型, Int32 则使用 。 Enum是.NET Framework中所有枚举的基类。 枚举类型由 enum C# 中的 关键字、 EnumVisual Basic 中的 ...End Enum 构造和 type F# 中的 关键字定义。Enum 提供用于比较此类的实例、将实例的值转换为其字符串表示形式、将数字的字符串表示形式转换为此类的实例以及创建指定枚举和值的实例的方法。

C#枚举类型定义及使用

enum默认基数从0开始,也可指定数值。例如我们使用中文也是可以的,但是要注意需要按照变量定义规则,就是指只能以字母或下划线开头,我们可以指定初识的值,后面会按照(+1)累加递增,对应的初识值会使得我们的枚举表达不同的意思,假设我们星期一初识值设为2,那么星期二会随着2的初识值星期递增。

public enum Days 
{ 
星期一=1, 
星期二, 
星期三,    
星期四, 
星期五, 
星期六, 
星期天 
};  
public enum Colors
{ 
白色= 1//也可以直接赋值初识值
红色 = 2,
黑色 = 4, 
绿色= 8 
};
int a = Days.星期一 ;//a的值为1
Days data= 1//表示data为星期一

C#枚举类型之使用

引用上面的定义的类型,我们可以进行赋值操作

Colors myColors =  Colors.红色; //赋值 
string strColor = myColors.tostring()
int   IntColor = (int)myColors ;
//注意:如果我们在使用enum的时候 比如我获取的值是string类型的需要转成enum
string corlor = “红色”;
Colors red = Enum.Parse(typeof(Colors), corlor);//那么red的值是红色

C#枚举类型位运算

枚举类型除了可以位与或,凡是int数据可以做的事情枚举都可以,特别是在const和readonly里面

Colors myColors =  Colors.红色 | Colors.白色 | Colors.绿色;//位或
Colors myColors =  Colors.红色 &Colors.白色 & Colors.绿色;//位与
Colors myColors =  Colors.红色 |Colors.白色 & Colors.绿色;//

C#枚举类型之遍历及转换 枚举类型在我们的程序中,一般使用在表明某种状态,比如我们获取的值是整形数据,然而这些值都是代表固定的意思,使用枚举类型会非常方便我们使用

//枚举类型使用foreach遍历
foreach (string s in Enum.GetNames(typeof(Days)))   
Response.Write(s + "--" +    Enum.Parse(typeof(Days), s).ToString());
//转换
Colors mc=Colors Enum.Parse(typeof(Colors ), "绿色");    //string转enum
if (System.Enum.IsDefined(typeof(Days), "星期二"))  //判断这个字符串是否是我们的枚举类里面的
 Days ds= (Days)Enum.Parse(typeof(Days), "星期一");//类型转换

C#枚举类型方法 枚举类型的方法,方法较多,可以收餐这篇文章,方便下次查阅

方法
CompareTo(Object)
将此实例与指定对象进行比较并返回一个对二者的相对值的指示。
Equals(Object)
返回一个值,该值指示此实例是否等于指定的对象。
Format(Type, Object, String)
根据指定格式将指定枚举类型的指定值转换为其等效的字符串表示形式。
GetHashCode()
返回该实例的值的哈希代码。
GetName(Type, Object)
在指定枚举中检索具有指定值的常数的名称。 
GetName<TEnum>(TEnum)
在指定枚举类型中检索具有指定值的常数的名称。
GetNames(Type)
检索指定枚举中常数名称的数组。
GetNames<TEnum>()
检索指定枚举类型中常数名称的数组。
GetType()
获取当前实例的 Type。
(继承自 Object)
GetTypeCode()
返回此枚举成员的基础类型的类型代码。
GetUnderlyingType(Type)
返回指定枚举的基础类型。
GetValues(Type)
检索指定枚举中常数值的数组。
GetValues<TEnum>()
检索指定枚举类型中常数值的数组。
GetValuesAsUnderlyingType(Type)
检索指定枚举中基础类型常量的值的数组。
GetValuesAsUnderlyingType<TEnum>()
检索指定枚举类型中基础类型常量的值的数组。
HasFlag(Enum)
确定当前实例中是否设置了一个或多个位域。
IsDefined(Type, Object)
返回一个布尔值,该值指示给定的整数值或其名称字符串是否存在于指定的枚举中。
IsDefined<TEnum>(TEnum)
返回一个布尔值,该值指示给定的整数值或其名称字符串是否存在于指定的枚举中。
MemberwiseClone()
创建当前 Object 的浅表副本。
(继承自 Object)
Parse(Type, ReadOnlySpan<Char>)
将一个或多个枚举常量的名称或数值的字符表示形式转换为等效的枚举对象。
Parse(Type, ReadOnlySpan<Char>, Boolean)
将一个或多个枚举常量的名称或数值的字符表示形式转换为等效的枚举对象。 一个参数指定该操作是否不区分大小写。 
Parse(Type, String)
将一个或多个枚举常数的名称或数字值的字符串表示转换成等效的枚举对象。
Parse(Type, String, Boolean)
将一个或多个枚举常数的名称或数字值的字符串表示转换成等效的枚举对象。 一个参数指定该操作是否不区分大小写。
Parse<TEnum>(ReadOnlySpan<Char>)
将指定的 TEnum 一个或多个枚举常量的名称或数值的字符表示形式转换为等效的枚举对象。
Parse<TEnum>(ReadOnlySpan<Char>, Boolean)
将指定的 TEnum 一个或多个枚举常量的名称或数值的字符表示形式转换为等效的枚举对象。 一个参数指定该操作是否不区分大小写。
Parse<TEnum>(String)
将 TEnum 指定的一个或多个枚举常数的名称或数字值的字符串表示形式转换成等效的枚举对象。
Parse<TEnum>(String, Boolean)
将 TEnum 指定的一个或多个枚举常数的名称或数字值的字符串表示形式转换成等效的枚举对象。 一个参数指定该操作是否不区分大小写。
ToObject(Type, Byte)
将指定的 8 位无符号整数转换为枚举成员。
ToObject(Type, Int16)
将指定的 16 位有符号整数转换为枚举成员。
ToObject(Type, Int32)
将指定的 32 位有符号整数转换为枚举成员。
ToObject(Type, Int64)
将指定的 64 位有符号整数转换为枚举成员。
ToObject(Type, Object)
将具有整数值的指定对象转换为枚举成员。
ToObject(Type, SByte)
将指定的 8 位有符号整数值转换为枚举成员。
ToObject(Type, UInt16)
将指定的 16 位无符号整数值转换为枚举成员。
ToObject(Type, UInt32)
将指定的 32 位无符号整数值转换为枚举成员。
ToObject(Type, UInt64)
将指定的 64 位无符号整数值转换为枚举成员。
ToString()
将此实例的值转换为其等效的字符串表示形式。
ToString(IFormatProvider)
已过时。
此方法重载已过时;请使用 ToString()。
ToString(String)
使用指定格式将此实例的值转换成其等效的字符串表示。
ToString(String, IFormatProvider)
已过时。
此方法重载已过时;请使用 ToString(String)。
TryParse(Type, ReadOnlySpan<Char>, Boolean, Object)
将一个或多个枚举常量的名称或数值的字符表示形式转换为等效的枚举对象。 一个参数指定该操作是否不区分大小写。
TryParse(Type, ReadOnlySpan<Char>, Object)
将一个或多个枚举常量的名称或数值的字符表示形式转换为等效的枚举对象。
TryParse(Type, String, Boolean, Object)
将一个或多个枚举常数的名称或数字值的字符串表示转换成等效的枚举对象。
TryParse(Type, String, Object)
将一个或多个枚举常数的名称或数字值的字符串表示转换成等效的枚举对象。
TryParse<TEnum>(ReadOnlySpan<Char>, Boolean, TEnum)
将一个或多个枚举常数的名称或数字值的字符串表示转换成等效的枚举对象。 一个参数指定该操作是否区分大小写。 用于指示转换是否成功的返回值。
TryParse<TEnum>(ReadOnlySpan<Char>, TEnum)
将一个或多个枚举常数的名称或数字值的字符串表示转换成等效的枚举对象。
TryParse<TEnum>(String, Boolean, TEnum)
将一个或多个枚举常数的名称或数字值的字符串表示转换成等效的枚举对象。 一个参数指定该操作是否区分大小写。 用于指示转换是否成功的返回值。
TryParse<TEnum>(String, TEnum)
将一个或多个枚举常数的名称或数字值的字符串表示转换成等效的枚举对象。 用于指示转换是否成功的返回值。

总结:

这篇文章比较简单,只是简单的学习一下,对它有更多的认识,在有需求的时候最起码有路子,虽然很简单,但是也是可以学到东西的,我们学习了新的知识,对我们的知识储备及技术又有新的一点点的进步,C#的技术就是先简单再难嘛,积少成多之后才会成长才会进步,我们要不断的学习不断的探索,才能有学习的动力,才会有学习的欲望,东西不多,但是实用性挺强建议收藏一下,哈哈哈哈,如果你觉得这篇文章对你有用,点赞最实在,创作不易,点赞评论收藏关注,嘿嘿,不喜勿喷!!!! a.jpg