如何将字符串转换为C#中的枚举标记值(即枚举名称)?
如何将字符串转换为C#中的枚举标记值(即枚举名称)?
可能重复:
如何将具有现有枚举标签名称(具有枚举标题名称)的字符串转换为枚举类型?不是变为枚举中列出的变量值之一,
而是成为类型为枚举的枚举标签名称?
例如,我可能有
Enum MyEnum { A,B,C,D };
然后
String a = "MyEnum";
问题的出现原因是希望将字符串转换为枚举类型的标签值(即枚举名称),并将其赋值给相应的枚举变量。然而,上述代码在尝试将字符串"myname"转换为枚举类型MyEnum时出现了错误。
要解决这个问题,我们可以使用以下方法:
MyEnum value = (MyEnum)Enum.Parse(typeof(MyEnum), "myname", true);
在上述代码中,我们添加了第三个参数true。这个参数表示忽略大小写,因此不区分大小写地匹配枚举名称。这样,即使字符串"myname"与枚举名称"MyName"的大小写不匹配,也能成功将其转换为枚举类型的标签值。
当然,如果我们希望精确匹配枚举名称的大小写,可以将第三个参数设置为false。这样,只有当字符串与枚举名称的大小写完全匹配时,才能成功转换为枚举类型的标签值。
通过使用上述解决方法,我们可以将字符串转换为枚举类型的标签值,并将其赋值给相应的枚举变量,以满足我们的需求。
问题的出现原因是需要将一个字符串转换为枚举类型的标签值(即枚举名称)。
解决方法就是使用C#中的Enum.Parse方法来实现字符串到枚举的转换。该方法接受三个参数:要转换的枚举类型、要转换的字符串和一个布尔值来指定是否忽略大小写。在这个问题中,我们可以使用typeof(Enum)来获取要转换的枚举类型,然后将要转换的字符串作为第二个参数传递给Enum.Parse方法。最后,将转换结果强制转换为Enum类型,即可得到枚举的标签值(即枚举名称)。
以下是解决该问题的代码示例:
Enum e = (Enum)Enum.Parse(typeof(Enum), "A", true);
以上代码将字符串"A"转换为枚举类型Enum的标签值,并将结果保存在变量e中。通过此方法,我们可以将任何字符串转换为枚举类型的标签值,以满足各种需求。