首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【小雨学编程之C#】18.5.1 细化枚举

我们上节内容中讲了枚举的基础知识。

知道了枚举的定义语法,

访问修饰符 enum 枚举名{

成员1,成员2

}

枚举定义的位置为类中,在我们当前的程序中就是定义在Program中,和Main同级。

枚举的使用,就是枚举名.成员名。

而且我们知道,我们定义的枚举类型中,对应的成员的基础类型为整形。

并且我们想知道基础类型的值的时候,可以用强制类型转换(int)就是枚举名.成员名来得到。

并且,系统会自动从0开始依次给成员赋值。

枚举成员数据类型可修改

那么既然枚举定义时,给成员默认的数据类型是int型,那么也就是可以给成员定义其他类型,这里直接告诉大家,枚举成员的数据类型可以是所有整形的数值类型,也就是byte、sbyte、short、ushort、int、uint、long、ulong。那么修改成员数据类型的方法是:

enum 枚举名:数据类型

{

成员1,成员2

}

比如说

public enum gender:byte

{

male,female

}

那么修改枚举成员数据类型的意义又是什么呢?我们都知道,声明数据类型的意义在于,告诉计算机响应操作分配多大的空间,但是如果系统内存空间有限,需要我们节省使用的时候,对应程序设计的过程中,我们就要考虑允许操作的最小空间,比如:

我们知道short的表示范围是-32768~32767,byte的表示范围为0~255,如果我们定义枚举的时候,只想让它表示方位,也就是东、西、南、北四个值的时候,显然使用byte就已经足够了,使用short或者int的时候明显的就是在浪费内存空间啦。

所以,我们在编程过程中,要留心变量的声明,给它们合理开辟内存空间。

枚举成员也可以不遵从系统的默认赋值

在我们的基础知识中,我们知道系统会自动从0开始依次给枚举成员赋值,不过毕竟从0开始赋值,不符合我们平时的生活习惯,如果我们用枚举表示一个星期中的7天的话,显然用0表示第一天还是很别扭。所以,其实枚举可以通过我们人工干预,手动修改成员赋值,比如:

public enum week:byte

{

Monday,

Tuesday,

Wednesday,

Thursday,

Friday,

Saturday,

Sunday,

}

那么我们知道,这样的定义方式,Monday默认值就是1。所以我们可以这样:

public enum week:byte

{

Monday=1,

Tuesday=2,

Wednesday=3,

Thursday=4,

Friday=5,

Saturday=6,

Sunday=7,

}

通过这样的方式我们就可以主动的给枚举成员赋值啦。

我们可以指定每一个枚举成员值,也可以指定部分枚举成员的值

上个例子中,由于一周7天是连续的,所以我们一次性用1~7从周一定义到周日,这也就是一次性指定每一个枚举成员值。但是在我们编写代码过程中,也会出现指定部分枚举成员值的情况。

比如,我们在写一个员工管理系统的工种功能,里面有人事、技术、主管、前台、总监,于是我们可以这样定义

public enum employees:byte

{

hr,

tech,

super,

fdesk,

directore

}

也许我们在编写过程中,事先约定,人事、主管、总监是必然职位,所以先编号,但是其他职位功能还没有编写,所以没有编号,就出现了这种情况:

这时候我们输出成员中的tech和fdesk的时候发现,teck是2、fdesk是3。这是怎么回事?

其实我们仔细观察可以发现,程序会在我们赋值的基础上,如果发现某个成员没有赋值,就会在上一个已经赋值的值的基础上,给这个成员增1赋值,也就是上一个成员值是1,那么这个成员值就是2。但是我们发现,系统自动给teck赋值为2,但是我们的super是我们手动赋值的2,这也就说明,在我们枚举类型的成员中,可以存在值相同的情况。

我们可以在定义枚举的成员的时候,直接将其他枚举成员值赋值给它

我们在定义方向的枚举的时候可以这样:

public enum direction :byte{

east=1,

south=2,

west=3,

north=4,

}

但是在程序的编辑过程中,我们有方向细化的要求,于是再次定义一个细节方向:

public enum detail_direction :byte{

east=1,

south=2,

west=3,

north=4,

southeast=5,

northeast=6,

southwest=7,

northwest=8

}

这时候,显然再次定义东南西北的代码是重复的,所以我们可以这样:

也就是,当两个枚举有数据关联的时候,可以用一个已知的枚举来直接定义另一个枚举成员值

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20210403A0B2OP00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券