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

先定义一个枚举类型

public enum PropertyType { 小学 = 0, 初中, 高中,大学 };

 

int ->enum 

       int d=2;     

       PropertyType  a=(PropertyType)d;

int <- enum        

       PropertyType  d = PropertyType.小学;       

       int a = Convert.ToInt32(d);

Enum类有关的方法

Enum.Parse 方法 (Type, String)

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

 
 
public static Object Parse(
    Type enumType,
    string value
)

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

value类型:System.String 包含要转换的值或名称的字符串。 返回值 类型:System.Object enumType 类型的对象,其值由 value 表示。
 

如果我们有两个enum,

1public enum Colors {Red, Green, Blue}
2 
3public enum BgColors {Red, Black, Green, Blue }

 

看起來差不多。

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

1Colors font_color = Colors.Blue;
2BgColor bg = (BgColor)font_color;

看起來可以,编译也对。但实际上是不對的,因为实际上是转成enum所代表的int,对应的結果往往不是我们想要的。

正确的作法是 

1Colors font_color = Colors.Blue;
2(BgColor)Enum.Parse(typeof(BgColor), font_color.ToString());

 这是一种很简单的理念,但常常写成上面的写法。但日后如果其中之一有变,造成顺序有更改的話,就会出现错误。

 

Enum.GetName 方法

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

public static string GetName(
    Type enumType,
    Object value
)

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

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

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

 

Enum.GetNames 方法

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

 

public static string[] GetNames(
    Type enumType
)

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


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

 

 

 

 

 

转载于:https://www.cnblogs.com/tech-bird/p/3515199.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值