c语⾔字符型强制转换,在C中将字符串强制转换为枚举标记#本问题已经有最佳答案,请猛点这⾥访问。
Possible Duplicate:
How do I Convert a string to an enum in C#?
如何将字符串(⽂本)转换为C中的枚举标记值#
如何将字符串转换为C中的枚举的可能副本?另请参见:enum.parse(),确实是⼀种更整洁的⽅式吗?.
您可以这样做:
MyEnum oMyEnum = (MyEnum) Enum.Parse(typeof(MyEnum),"stringValue");
虽然所有的enum.parse⼈员都是正确的,但现在有了iparse!
这⼤⼤改善了事情。
我通常使⽤泛型枚举类来处理这些内容:
public static class Enum
{
public static T Parse(string value)
{
return (T)Enum.Parse(typeof(T), value);
}
public static List GetValues()
{
List values = new List();
foreach (T value in Enum.GetValues(typeof(T)))
values.Add(value);
return values;
}
public static string GetName(object value)
{
return Enum.GetName(typeof(T), value);
}
// etc
// you also can add here TryParse
}
使⽤更简单:
Enum.Parse("Friday");
使⽤Enum.Parse:
(EnumType)Enum.Parse(typeof(EnumType),"EnumString");
.NET在System.Enum类型上提供了⼀些静态⽅法来执⾏此操作,除了实际执⾏转换的代码外,还需要考虑以下⼏点:
必须知道包含要强制转换的值的枚举类型。
考虑到您试图强制转换的字符串值可能没有在⽬标枚举类型上定义这⼀事实是明智的。
因此,如果您有⼀个枚举:
public enum TestEnum
{
FirstValue,
SecondValue
}
然后,System.Enum类提供以下2个静态⽅法来将字符串值强制转换为枚举类型:
Enum.IsDefined(.NET 1.1-4+Silverlight)(⽤法)
TestEnum testEnum;
if( Enum.IsDefined(typeof(TestEnum),"FirstValue") )
{
testEnum = (TestEnum)Enum.Parse(typeof(TestEnum),"FirstValue");
}
TestEnum testEnum;
bool success = Enum.TryParse("FirstValue", out testEnum);
或者,如果不需要执⾏任何安全检查,则提供enum.parse⽅法(如其他⼈所述)。但是,如果您在我们的⽰例中尝试这样做,
Enum.Parse(TestEnum,"ThisValueDoesNotExist")
然后.NET将抛出⼀个必须处理的System.ArgumentException。
因此,简⽽⾔之,虽然执⾏您要求的操作的语法很简单,但我建议您考虑⼀些预防措施,以确保代码⽆错误,尤其是在分析从⽤户输⼊获得的字符串时。如果字符串来⾃设置⽂件或某种其他类型的值,您可以确定是在枚举类型中定义的,那么可以跳过我在回答中概述的⼀些额外步骤。
希望这有帮助!
或者⽤这样的⽅法包装它:
T ParseEnum(string stringValue)
{
return (T) Enum.Parse(typeof(T), stringValue);
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论