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人员都是正确的,但现在有了enum.triparse!

这大大改善了事情。

我通常使用泛型枚举类来处理这些内容:

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");

}

enum.typarse(.net 4+silverlight)(用法)

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);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值