您的位置:首页 > 编程语言 > C#

C#中枚举类型和int类型的转化

2014-01-11 17:57 441 查看
先定义一个枚举类型

publicenumPropertyType{小学=0,初中,高中,大学};


int->enum

intd=2;

PropertyTypea=(PropertyType)d;

int<-enum

PropertyTyped=PropertyType.小学;

inta=Convert.ToInt32(d);

[b]Enum类有关的方法[/b]

Enum.Parse方法(Type,String)

将一个或多个枚举常数的名称或数字值的字符串表示转换成等效的枚举对象。



publicstaticObjectParse(
TypeenumType,
stringvalue
)

参数
enumType类型:System.Type
枚举类型。

value类型:System.String
包含要转换的值或名称的字符串。

返回值
类型:System.Object
enumType类型的对象,其值由value表示。




如果我们有两个enum,

1
public
enum
Colors{Red,Green,Blue}
2
3
public
enum
BgColors{Red,Black,Green,Blue}
看起來差不多。

有一天有需要把一个变成另一个來用。可能会写成这样:

1
Colorsfont_color=Colors.Blue;
2
BgColorbg=(BgColor)font_color;
看起來可以,编译也对。但实际上是不對的,因为实际上是转成enum所代表的int,对应的結果往往不是我们想要的。

正确的作法是

1
Colorsfont_color=Colors.Blue;
2
(BgColor)Enum.Parse(
typeof
(BgColor),font_color.ToString());
这是一种很简单的理念,但常常写成上面的写法。但日后如果其中之一有变,造成顺序有更改的話,就会出现错误。

[b]Enum.GetName方法[/b]

指定枚举中检索具有指定值的常数的名称。

publicstaticstringGetName(
TypeenumType,
Objectvalue
)

enumType
类型:System.Type
枚举类型。

value
类型:System.Object
特定枚举常数的值(根据其基础类型)。

返回值
类型:System.String
一个字符串,其中包含enumType中值为value的枚举常数的名称;如果没有找到这样的常数,则为null。


[b]Enum.GetNames方法[/b]

检索指定枚举中常数名称的数组。

publicstaticstring[]GetNames(
TypeenumType
)

参数
enumType
类型:System.Type
枚举类型。

返回值
类型:System.String[]
enumType的常数名称的字符串数组。


ViewCode
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: