2010-09-06 136 views
0

嗨,所有,因为我知道我们可以通过装箱和拆箱的概念改变参考类型的值类型。所以我想问一下,枚举是一个值类型,所以我们可以在参考类型中改变它吗? 像int a = 5是一个值类型,我们可以将它转换为参考类型,我们可以用enum做同样的事情;在c中改变类型#

回答

3

你的问题有点不清楚,但可以,你可以用与其他值类型相同的方法来枚举枚举值。一个有趣的一点是,你虽然盒装枚举值保持适当的枚举类型,你可以从一个枚举拆箱到它的基本类型,反之亦然:

using System; 

enum Color { Red, Green, Blue } 

class Test 
{ 
    static void Main() 
    { 
     Color c = Color.Blue; 
     object o = c;   
     int i = (int) o; 
     Console.WriteLine(i); // Prints 2 

     i = 1; 
     o = i; 
     c = (Color) o; 
     Console.WriteLine(c); // Prints Green 
    } 
} 
+0

稍微偏离话题的提问字节类型的情况下是有用的,但我想这也可能是有趣的,也指出你不需要为了在枚举类型和它们的基础类型之间进行转换而在拳击/拆箱方面进行往返。 – 2010-09-06 10:09:33

0

是的,它是可能的框枚举,因为底层值是一个数值。您也可以通过下面的语法改变其基本类型:

public enum Test : byte 
{ /* Values */ } 

请注意,您要使用的枚举值作为标志