C#中如何从枚举值获取对应的字符串名称?
不用CASE/IF-ELSE获取枚举名称的简便方法
当然有啦!C#提供了原生的枚举操作方法,能轻松实现根据数值获取对应枚举名称的需求,完全不用写一堆冗余的分支判断。
方法1:直接使用Enum.GetName
这是最直接的方式,只需要传入枚举类型和目标数值,就能返回对应的名称字符串:
int inputValue = 1; string stateName = Enum.GetName(typeof(State), inputValue); // 此时stateName的值为 "KARNATAKA"
如果传入的数值不在枚举定义的有效值范围内,这个方法会返回null,你可以根据需要添加空值判断逻辑。
方法2:转换为枚举实例后调用ToString()
先把数值强制转换为对应的枚举类型,再调用ToString()方法获取名称:
int inputValue = 5; State state = (State)inputValue; string stateName = state.ToString(); // 此时stateName的值为 "GOA"
不过要注意:如果传入的数值不在枚举的合法范围内,强制转换不会报错,但ToString()会返回该数值的字符串形式(比如输入6会返回"6")。如果需要严格校验数值的合法性,可以先使用Enum.IsDefined判断:
int inputValue = 3; if (Enum.IsDefined(typeof(State), inputValue)) { State state = (State)inputValue; string stateName = state.ToString(); // 处理合法的枚举名称 } else { // 处理非法数值的情况,比如抛出提示或返回默认值 }
这两种方法都简洁高效,完全替代了繁琐的CASE/IF-ELSE分支,根据你的业务需求选择合适的方式即可。
内容的提问来源于stack exchange,提问作者Vikas Kunte
相关产品推荐
相关产品推荐

