踩坑了,C#枚举转换要小心!
dotNET全栈开发
共 1774字,需浏览 4分钟
· 2023-09-29
小心 Enum Parse 中的坑
Intro
最近使用枚举的时候,踩了一个小坑,分享一下,主要是枚举从 int 值转成枚举时可能会遇到
Sample
来看下面的示例:
首先定义一个枚举:
public enum Color : byte
{
Red = 0,
Green = 1,
Blue = 2,
}
来看一下下面的代码,下面的代码会抛异常吗?
Console.WriteLine(((Color)10).ToString());
再来看下面的代码,下面的代码又会怎么样呢,输出结果是什么?
var intValue = int.MaxValue;
Console.WriteLine(((Color)intValue).ToString());
输出结果如下:
从上面的结果看得出来,从 int 值直接做转换的时候,结果可能并不是期望的,不会抛异常,那么又该如何处理呢?我们再来看一个示例
ParseSample
Enum
的 Parse
方法不仅支持从 Name
的字符串比如前面定义的枚举中的 Red
/Green
,还可以支持从 int
的字符串也就是 0
/1
/2
,来看下面的示例:
if (Enum.TryParse("10", out Color color))
{
Console.WriteLine(color.ToString());
}
if (Enum.TryParse("10", out Color color1)
&& Enum.IsDefined(typeof(Color), color1))
{
Console.WriteLine($"Success, {color1}");
}
else
{
Console.WriteLine("Can not match");
}
来直接看输出结果吧:
Parse from name
再来看一个从 Name 转换的一个示例:
if (Enum.TryParse("Yellow", out Color color2))
{
Console.WriteLine(color2.ToString());
}
这个不会有任何输出,TryParse
会直接返回 false
More
当枚举从 int 值转换的时候,需要小心,即使 int 值在枚举中没有定义也会转换成功,如果要确保枚举中定义了对应的值时,应该使用 IsDefined
来确保枚举定义了对应的值
Reference
- https://docs.microsoft.com/en-us/dotnet/api/system.enum.tryparse?view=net-5.0
回复 【关闭】 学永久关闭App开屏广告 回复 【删除】学自动检测那个微信好友删除、拉黑 回复 【手册】 获取3万字.NET、C#工程师面试手册 回复 【帮助】获取100+个常用的C#帮助类库 回复 【加群】加入DotNet学习交流群
评论
雷军辟谣了!不是高考状元,卡里也没有冰冷的 40 亿
架构师大咖
架构师大咖,打造有价值的架构师交流平台。分享架构师干货、教程、课程、资讯。架构师大咖,每日推送。
公众号该公众号已被封禁最近很火的雷军简历,听说落魄时卡里只有冰冷的 40
源码共读
0
警报炸锅了,FastJson 又立功了。。
往期热门文章:1、一个小公司的技术开发心酸事(已倒闭)2、JetBrains 如何看待自己的软件在中国被频繁破解?3、程序员因Bug被要求归还4万多年终奖,网友:不还!4、一套万能通用的异步处理方案5、微服务全做错了!谷歌提出新方法,成本直接降9倍!线上事故回顾前段时间新增一个特别简单的功能,晚上上
Java后端技术
1
只要状态对了,事儿也就顺了
卖鸡蛋思维,适合各行各业的套用思维没钱时,牢记卖鸡蛋思维。 请一定耐心看完,成就不一样的你自己。When there‘s no money,Remember the thought of selling eggs.卖鸡蛋思维强调的是商业和经济思维的重要性,从商和创业都应该具备这样的思
小Q聊产品
0
十万亿智慧养老市场,走到哪一步了?
《2024年智慧康养平台模式发展研究报告》即将发布。文|王菲当前,中国人口老龄化程度不断加剧,为了应对日益凸显的养老难题,构建多层次养老服务体系成为社会关注的热点。根据最新发布的《中华人民共和国2023年国民经济和社会发展统计公报》显示,我国60岁及以上的老年人口数量已达到2.97亿,占全国总人口的
亿欧网
0
上门按摩的女技师们,要IPO了
不刮骨疗毒,怎么两袖清风?冲击万店,汉堡界能跑出下一个蜜雪冰城吗?拥有2.5万上门按摩女技师的东郊到家,要IPO了。消息源于东郊到家创始人汤帆在重庆首届O2O行业发展大会上的发言。汤帆表示,截至2023年底,东郊到家完成了部分IPO的规划实施及合规准备工作,并称东郊委托的上市中介机构是第一梯队的品牌
亿欧网
0
啤酒厂,造了一台“诺基亚”
今天再聊个好玩的 你们都喝过喜力啤酒吧?就是Heineken他们家也出手机了长这样喜力啤酒这几天和 HMD 以及美国零售商 Bodega 合作推出了一款名为「The Boring Phone」的翻盖机看到HMD你们应该就知道,其实就是诺基亚啦 这个造型,我一眼就认出是你啦!这款手机采用透明
放毒
3
又一国产灭霸,要来了
据透露,vivo X100 Ultra确定会在今年5月份发布,这款机型基本可以锁定“vivo X系列有史以来最强的影像旗舰”。vivo推出自研影像品牌BlueImage,也意味着继华为XMAGE后,手机行业第二个独立影像品牌的诞生。vivo X100 Ultra后置三摄,将会搭载一枚2亿像素潜望式超
放毒
2
嘶!穿上爽翻的“冰冰裤”!穿了比不穿还要爽!男女通吃!
还没真正到夏天,最近的天气就已经让人开始隐隐崩溃了有没有一年四季只有ta,能让你体验到下面这些不堪回首的场面:😒出门几分钟流汗半小时,汗如雨下男生也没好到哪里去,一些需要经常出门、爱运动的,更是汗如雨下,衣服里外全湿透。所以现在很多朋友买夏装,都会冲「轻薄凉感」而去,为功能买单。其中卖的最火的,应该
放毒
0