C# 枚举
程序员文章站
2022-05-31 19:19:00
一、简介 枚举是一组命名整型常量;枚举类型是使用 enum 关键字声明的;C# 枚举是值类型。 二、语法 枚举的语法: public:访问修饰符,公共的公开的,哪都可以访问; enum:关键字,声明枚举的关键字; 枚举名:要符合Pascal命名规范; 将枚举声明到命名空间下面,类的外面,表示这个命名 ......
一、简介
枚举是一组命名整型常量;枚举类型是使用 enum 关键字声明的;c# 枚举是值类型。
二、语法
枚举的语法:
public enum 枚举名
{
值1,
值2,
值3,
............
}
或者
enum 枚举名
{
值1,
值2,
值3,
............
}
public:访问修饰符,公共的公开的,哪都可以访问;
enum:关键字,声明枚举的关键字;
枚举名:要符合pascal命名规范;
将枚举声明到命名空间下面,类的外面,表示这个命名空间下,所以类都可以访问这个枚举;
三、类型转换
我们可以将一个枚举类型的变量跟int类型和string类型互相转换:
1.枚举类型默认是跟int类型相互兼容的,所以可以通过强制类型转换的语法互相转换,当转换一个枚举中没有的值的时候,不会抛异常,而是直接将数字显示出来。
2.如果将枚举类型转换成string类型,则直接调用tostring().
3.如果将字符串转换成枚举类型则需要下面这样一行代码:
(要转换的枚举类型)enum.parse(typeof(要转换的枚举类型),"要转换的字符串");
如果转换的字符串是数字,则就算枚举中没有,也会不会抛异常。
如果转换的字符串是文本,如果枚举中没有,则会抛出异常。
备注:所有的类型都能够转换成string类型,调用tostring()。
四、实例
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
namespace _03枚举的练习
{
public enum sesons
{
春,
夏,
秋,
冬
}
public enum qqstate
{
online,
offline,
leave,
busy,
qme
}
class program
{
static void main(string[] args)
{
sesons s = sesons.春;
qqstate state = qqstate.online;
}
}
}
五、类型转换实例
1.将枚举类型强转成int类型
namespace _04枚举和int以及string类型之间的转换
{
public enum qqstate
{
online=1,
offline,
leave,
busy,
qme
}
class program
{
static void main(string[] args)
{
#region 将枚举类型强转成int类型
qqstate state = qqstate.online;
//枚举类型默认可以跟int类型互相转换 枚举类型跟int类型是兼容的
int n = (int)state;
console.writeline(n);
console.writeline((int)qqstate.offline);
console.writeline((int)qqstate.leave);
console.writeline((int)qqstate.busy);
console.writeline((int)qqstate.qme);
console.readkey();
#endregion
}
}
}
2.将int类型强转为枚举类型
namespace _04枚举和int以及string类型之间的转换
{
public enum qqstate
{
online=1,
offline,
leave,
busy,
qme
}
class program
{
static void main(string[] args)
{
#region 将int类型强转为枚举类型
int n1 = 3;
qqstate state = (qqstate)n1;
console.writeline(state);
console.readkey();
#endregion
}
}
}
3.将枚举类型转换成字符串类型
amespace _04枚举和int以及string类型之间的转换
{
public enum qqstate
{
online=1,
offline,
leave,
busy,
qme
}
class program
{
static void main(string[] args)
{
#region 将枚举类型转换成字符串类型
//所有的类型都能够转换成string类型
int n1 = 10;
// double n1 = 3.14;
decimal n1 = 5000m;
string s1= n1.tostring();
console.writeline(s1);
qqstate state = qqstate.online;
string s = state.tostring();
console.writeline(s);
console.readkey();
#endregion
}
}
}
4.将字符串转换成枚举类型
amespace _04枚举和int以及string类型之间的转换
{
public enum qqstate
{
online=1,
offline,
leave,
busy,
qme
}
class program
{
static void main(string[] args)
{
//枚举练习
//提示用户选择一个在线状态,我们接受,并将用户的输入转换成枚举类型。
//再次打印到控制台中
console.writeline("请选择您的qq在线状态 1--online 2--offline 3--leave 4--busy 5--qme");
string input = console.readline();
switch (input)
{
case "1": qqstate s1 = (qqstate)enum.parse(typeof(qqstate), input);
console.writeline("您选择的在线状态是{0}",s1);
break;
case "2": qqstate s2 = (qqstate)enum.parse(typeof(qqstate), input);
console.writeline("您选择的在线状态是{0}",s2);
break;
case "3": qqstate s3 = (qqstate)enum.parse(typeof(qqstate), input);
console.writeline("您选择的在线状态是{0}",s3);
break;
case "4": qqstate s4 = (qqstate)enum.parse(typeof(qqstate), input);
console.writeline("您选择的在线状态是{0}", s4);
break;
case "5": qqstate s5 = (qqstate)enum.parse(typeof(qqstate), input);
console.writeline("您选择的在线状态是{0}", s5);
break;
}
console.readkey();
}
}
}
上一篇: 高德亿级流量接入层服务的演化之路
下一篇: 吃毛豆长胖吗,如何吃毛豆比较好