C#关于枚举(enum)类型与整型、字符串相互转换的总结

2023-05-16

C#关于枚举(enum)类型与整型、字符串相互转换的总结

首先,声明枚举类型的变量:

//除枚举类型转换成整数类型示范中修改了该代码,其他均采用此枚举类型的声明。
[public] enum Subject
{
    Chinese,
    Math,
    English,
    AndroidDevelop,
    GameDevelop
}

注意:
①【public】关键字视情况而定,可以不加。
最好是在命名空间下直接定义枚举,以便该命名空间中的所有类都能够使用。
③最后一个值可以加【,】也可以不加。

四种类型转换的方法:

1. 枚举(enum)类型→整数(int)类型

Subject subject1 = Subject.Chinese;
Subject subject2 = Subject.AndroidDevelop;
int num1 = (int)subject1;
int num2 = (int)subject2;
Console.WriteLine(num1);//输出:0
Console.WriteLine(num2);//输出:3
Console.ReadKey();
注:第一个枚举元素的值为0,后面每个枚举元素的值依次递增。

修改枚举元素的值后,查看枚举数的值变化规律。不难发现,可以强制修改枚举元素序列从某一个数值开始递增。

public enum Subject
{
	//仅仅在第1小点这里修改枚举类型元素的序号
    Chinese = 5,
    Math,
    English = 10,
    AndroidDevelop,
    GameDevelop
}
Console.WriteLine((int)Subject.Chinese);//输出:5
Console.WriteLine((int)Subject.Math);//输出:6
Console.WriteLine((int)Subject.English);//输出:10
Console.WriteLine((int)Subject.AndroidDevelop);//输出:11
Console.WriteLine((int)Subject.GameDevelop);//输出:12
Console.ReadKey();

2. 整数(int)类型→枚举(enum)类型

int i = 3;
Subject subject = (Subject)i;
Console.WriteLine(subject);//输出:AndroidDevelop
Console.ReadKey();

由此可见,在转化为枚举类型的过程中,当枚举类型的元素序号包括整数类型的数值就得到枚举类型的元素,如果没有包括整数类型的数值,得到的是数值本身。

int i = 8;
Subject subject = (Subject)i;
Console.WriteLine(subject);//输出:8
Console.ReadKey();

3. 枚举(enum)类型→字符串(string)类型

Subject subject = Subject.GameDevelop;
string str = subject.ToString();
Console.WriteLine(str);//输出:GameDevelop
Console.ReadKey();

万物皆可ToString():

int i = 1;
double d = 2.2;
char c = 'C';
decimal m = 200.5m;
Console.WriteLine(i.ToString());//输出:1
Console.WriteLine(d.ToString());//输出:2.2
Console.WriteLine(c.ToString());//输出:C
Console.WriteLine(m.ToString());//输出:200.5
Console.ReadKey();

4. 字符串(string)类型→枚举(enum)类型

①字符串内容的值与枚举元素名一致,输出枚举元素名。

string str1 = "Math";
Subject subject1 = (Subject)Enum.Parse(typeof(Subject), str1);
Console.WriteLine(subject1);//输出:Math
Console.ReadKey();

②字符串内容的数值与枚举元素序号一致,输出对应的序号值的枚举元素名。

string str2 = "3";
Subject subject2 = (Subject)Enum.Parse(typeof(Subject), str2);
Console.WriteLine(subject2);//输出:AndroidDevelop
Console.ReadKey();

③字符串内容的数值与枚举元素序号不一致,输出字符串内容的数值。

string str3 = "10";
Subject subject3 = (Subject)Enum.Parse(typeof(Subject), str3);
Console.WriteLine(subject3);//输出:10
Console.ReadKey();

④除了数值以及与枚举元素一致的文本内容外,其他字符串本文内容无法转换成枚举类型,因此会抛出异常。

//这里是错误示范!代码存在异常!
string str3 = "异常内容";
Subject subject3 = (Subject)Enum.Parse(typeof(Subject), str3);//抛出异常
Console.WriteLine(subject3);
Console.ReadKey();

因为作者精力有限,文章中难免出现一些错漏,敬请广大专家和网友批评、指正。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#关于枚举(enum)类型与整型、字符串相互转换的总结 的相关文章

随机推荐

  • BIOS 和 UEFI

    BIOS 和 UEFI 是电脑的两种启动模式 xff0c 也就是开机后最先执行的程序 它们都是固件 xff0c 程序已经预先写入到芯片中 BIOS是传统的启动方式 xff0c UEFI是一种新的启动方式 xff0c 现在的出的电脑基本都是用
  • 安装双系统后直接进入Ubuntu没有grub引导项

    解决问题 xff1a 安装win10 43 Ubuntu18 04双系统后 xff0c 开机直接进入Ubuntu没有grub引导项 原因 xff1a 没有为Ubuntu的启动项配置grub 如何配置 xff1f 首先在终端执行如下命令打开g
  • VNC 配置使用

    被控制的计算机系统Ubutnu18 04 xff0c 控制的计算机系统Windows10 1 下载 Download VNC Server VNC Connect 被控制的计算机下载Server版 xff0c 控制的计算机下载Viewer版
  • UTC和GMT的区别

    GMT xff1a Greenwich Mean Time 格林尼治标准时间 是以英国格林尼治天文台观测结果得出的时间 xff0c 这是英国格林尼治的当地时间 xff0c 是世界时间的标准 UT xff1a Universal Time 世
  • 基于MAML的改进方法总结

    元学习是解决小样本学习问题的重要方法之一 xff0c 现已取得较为优异的成绩 元学习方法大体上可以分为基于优化的和基于度量两种 基于度量的方法是非参数方法 xff0c 包括孪生网络 关系网络 匹配网络等 基于优化的方法是参数化方法 xff0
  • list与dict互转

    keys span class token operator 61 span span class token punctuation span span class token string 39 a 39 span span class
  • 进栈出栈操作

    首先简单输入n 代表输入数字的个数 xff0c 然后依次进栈 xff0c 再出栈输出每个数字 xff08 栈是一种先进后出的数据结构 xff09 span class token macro property span class toke
  • 指针笔记

    指针的两种写法注意 xff1a int c 61 1 int p 61 amp c 或 int p p 61 amp c xff1b 这两种写法是相等的 另外注意野指针的概念 xff1a 1 野指针的错误来源就是指针定义了以后没有初始化 x
  • Echarts中国地图根据数据对省份渲染不同的颜色

    在 setOption 里面设置 xff08 setOption官方参数及用法介绍 xff09 title span class token comment 标题设置 span legend span class token comment
  • Ubuntu22.04系统安装+显卡驱动安装

    制作Ubuntu系统启动盘 推荐rurus 选择GPT分区 xff0c UEFI引导 xff08 可以cmd运行msinfo32可以看到 xff09 Ubuntu系统卸载 关于up主里面Ubuntu引导项删除出现问题 xff0c 可以采用下
  • error while loading shared libraries: libssl.so.10: cannot open shared object file: No such file or

    error while loading shared libraries libssl so 10 cannot open shared object file No such file or directory 一 依赖文件下载地址 根据
  • ArchLinux安装(VirtualBox)

    VirtualBox配置 1 启用EFI 2 选择光驱 安装ArchLinux 1 查看是否开启EFI span class token comment ls sys firmware efi efivars span 2 查看是否能上网
  • linux查看端口状态&防火墙开放端口

    1 查看防火墙状态 查看防火墙状态 systemctl status firewalld 开启防火墙 systemctl start firewalld 关闭防火墙 systemctl stop firewalld 开启防火墙 servic
  • 【递归】_求解_斐波拉契数列

    斐波纳契数列 xff08 Fibonacci sequence xff09 是数学界十分著名的数列 有著名的兔子问题 xff0c 斐波那契数列又称 兔子数列 黄金分割数列 这个看上去很简单的数列 xff0c 却总是出现在人们的眼前 蜻蜓翅膀
  • 【JS】数组去重

    JS 数组去重 有一个数组 arr 61 a c b c e d a f e g b a g 要求去除掉数组中重复的元素 xff01 案例分析 xff1a 目标 xff1a 把旧数组里面不重复的元素选出来放到新数组中 xff0c 重复的元素
  • Win11 更新完检测不到音频设备

    打开电脑经过一番重大更新发现音频设备找不到了 xff01 xff01 一整懵 解决方案 xff1a 1 开始 搜索 设备管理器 2 展开 系统设备 3 找到 英特尔 R 智音技术音频控制器 右键点击 更新驱动程序 4 点击第二个 浏览我的计
  • python之邮件发送简易篇

    span class token comment coding utf 8 span span class token keyword import span smtplib span class token keyword from sp
  • 我犯的一个低级错误

    谨以此篇记录这个弱智的错误 2022 4 20晚 今天测试一个SpringBoot的CRUD项目时遇一个奇怪的报错 如下图 错误信息是 Releasing transactional SqlSession org apache ibatis
  • IDEA如何修改背景图片

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 修改IDEA背景图片 前言一 先来分享一下我的IDEA背景图片二 步骤总结 前言 习惯了IDEA默认的黑色与白色背景 xff0c 很多人都
  • C#关于枚举(enum)类型与整型、字符串相互转换的总结

    C 关于枚举 enum 类型与整型 字符串相互转换的总结 首先 xff0c 声明枚举类型的变量 xff1a span class token comment 除枚举类型转换成整数类型示范中修改了该代码 xff0c 其他均采用此枚举类型的声明