C#如何正确获取Enum枚举值转为字符串数组用于比较验证
枚举转字符串数组实现方法
场景说明
需求是校验自定义枚举的成员值,将枚举所有成员名称转为字符串数组,和预期值做相等比较,现有枚举定义如下:
namespace Test.Enums { public enum Type { Audi, Porsche, Peugeot } }
原测试代码中直接实例化枚举类型的写法无法得到目标字符串数组,需要调整取值逻辑。
正确实现
直接使用.NET内置的Enum.GetNames方法,传入目标枚举的类型,即可返回该枚举所有成员名称的字符串数组,返回顺序和枚举定义的成员顺序完全一致,修正后的测试代码如下:
[Fact] public void Test() { //arrange string[] expected = {"Audi", "Porsche", "Peugeot"}; string[] actual = Enum.GetNames(typeof(Test.Enums.Type)); //assert Assert.Equal(expected, actual); }
补充说明
- 如果需要获取枚举对应的数值而非名称,可以使用
Enum.GetValues方法,该方法返回所有枚举成员的值数组,按需转为对应整型类型即可 - 若使用的是.NET 5及以上版本,还可以用泛型版本的
Enum.GetNames<Test.Enums.Type>()写法,不需要显式传入typeof参数,代码更简洁。
内容的提问来源于stack exchange,提问作者Goffer
相关产品推荐
相关产品推荐

