浅谈C#枚举类型
2020-12-13 15:13
标签:style blog http io color ar os 使用 sp 枚举(Enum),一个毫不起眼的小喽啰。 CSDN的描述如下: 其实这个已经够详细了。相信枚举大家都不陌生,只是这玩意不常用。 那么枚举有什么用呢?假设,你现在跟你的团队小组(3人)正在开发一个学生成绩管理系统。各自负责一个小模块。 你对于性别sex是这样定义的: 你的基友_one是这样描述的: 而你的基友_two是这样实现的: 嗯,大家发现问题没有?每个人对“性别”的描述都不一样,这就导致后期代码拼凑时,不可避免地出错。这又跟Enum有什么关系呢? 当然有,关系还挺大的,因为你可以如下定义: 将性别定义为一个枚举类型,这样访问时,调用sex.Male/sex.Female,可以让我们很直观地知道,这一行代码是在调用到性别,这个东西。 那么如何用呢?如下: 具体的呢,可以将声明枚举类型写在Main()方法之外,namespace之内,这样会更合理。因为这样所有用户自定义的类,都可以调用到声明的枚举类型。 下面来介绍,枚举这东西与int ,string 这些类型的转换。 首先我们要知道一件事,C#里所有的类型都可以转换为string类型。如何转换,So easy~ ,直接调用 sex.Male.ToString();即可。 另外,我们要知道,C#中转换类型首先我们要判断类型间是否兼容,如果遇到int与double,decimal,long,short等的转换,只需要注意精度就可以。 如果是string转为int,则可能要用到以下三种方法: 所以,Enum类型转为string或int类型,代码如下,so easy too~ 但是,当遇到,string类型转为enum时,你就苦恼了,string str = "1"; sex.Male = str;? No,No,No,正确写法应该是: 乍一看好像挺高端的样子,我们慢慢看来, 首先,typeof干嘛用的?简单来说就是获取当前枚举的类型。为什么要这样做呢?假设你现在有好多好多个枚举类型,什么 sex,weekend,1234...当你要对其中某一种类型 转换为string类型时,编译器是不知道你要对哪一个类型进行转换的。因此要用typeof()来获取当前要转换的枚举类型。 至于第二个参数,str只是我们所要转换的那个string变量。 所以,程序可以这样写: 对于,str变量,你可以输入0/1,或者Male/Female,如果输入的变量不是前边几种的话,默认程序就会报错,上边这程序是调用了动态链接库里的MessageBox函数来显示 一个错误消息。 至此,枚举类型介绍完毕。因为在下才疏学浅,如有误导之处,还望海涵指出,以便你我增进知识。 转载请首行声明:http://www.cnblogs.com/gu-zhan/ --- 咸叔专属 浅谈C#枚举类型 标签:style blog http io color ar os 使用 sp 原文地址:http://www.cnblogs.com/gu-zhan/p/4072649.htmlenum 关键字用于声明枚举,即一种由一组称为枚举数列表的命名常量组成的独特类型。
通常情况下,最好是在命名空间内直接定义枚举,以便该命名空间中的所有类都能够同样方便地访问它。 但是,还可以将枚举嵌套在类或结构中。
默认情况下,第一个枚举数的值为 0,后面每个枚举数的值依次递增 1。
char s1 = ‘M‘;//男生
char s1 = ‘F‘;//女生
string str1 = "Male";//男生
string str2 = "Female";//女生
string str1 = "男生"; string str2 = "女生";
public enum sex
{
Male,
Female
}
sex s1 = sex.Male;//or
sex s2 = sex.Female;
1.使用Convert.ToInt32();
int i = Convert.ToInt32(str);//str代表某个字符串
2.使用int.Parse();
int i = int.Parse(str);//str代表某个字符串
3.使用int.TryParse();
int i = int.TryParse(str);//str代表某个字符串
public Enum sex
{
Male,
Female
}
int i = (int)sex.Male;
Console.WriteLine(i);
string str = sex.Male.ToString();
string str = "1";
sex.Male = (sex)Enum.Parse(typeof(sex),str);
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Runtime.InteropServices;
5 using System.Text;
6 using System.Threading.Tasks;
7 namespace project
8 {
9 public enum sex
10 {
11 Male,
12 Female
13 }
14 public static void Main()
15 {
16 [DllImport("User32.dll")]
17 public static extern int MessageBox(
18 int h,
19 string m,
20 string c,
21 int type
22 )
23
24
25 try
26 {
27 string str = Console.ReadLine();
28 sex s = (sex)Enum.Parse(typeof(sex),str);
29 Console.WriteLine(s);
30 }
31 catch
32 {
33 MessageBox(0,"What you input is wrong ","Catch",3);
34 }
35 }
36 }
上一篇:04-2_Python中的线性表
下一篇:百度音乐非公开的api