enum fx:byte
{
a=1,
b=2,
c=3,
d=4
}static void Main(string[] args)
{
byte  mybyte;
string mystring;
fx my=fx.a;
Console.WriteLine("my={0}",my);
mybyte=(byte)my;
mystring=Convert.ToString(my);
Console.WriteLine("mybyte={0}",mybyte);
Console.WriteLine("string{0}",mystring);
}
1、为什么my的结果是“a”而不是“1”
2、已经声明了my为fx类型,为什么不能直接把“mybyte=(byte)my”改成“mybyte=fx.a”
   或者“mybyte=my.a”而只能改成“mybyte=(byte)fx.a”
3、mystring=Convert.ToString(my)的意思是把my的值强制转换成string吗?为什么不能用(string)
 来转呢

解决方案 »

  1.   

    枚举里面 a b c d 就是值 1234  可以快速指向的 , 我是这样理解的
      

  2.   

    1.枚举的作用是什么?是为了更直观,所以应该是a,而不是1
    2.为什么不能直接mybyte=fx.a?因为fx.a是枚举类型,mybyte是byte类型,不允许隐式转换
    3.Convert.ToString()将指定的 8 位无符号整数的值转换为它的等效 String 表示形式。 (类型)是由语言内置的
      

  3.   

    那这段程序里面的变量"my"是能起什么作用,它虽然声明成fx,但事实上好像是空的什么都没有单独写出来后面没有出现像fx那样有打了点的提示
      

  4.   

    举例说明:
    enum DayOfWeek:int
    {
    星期天=1;
    星期一=2;
    星期二=3;
    ...
    }DayOfWeek MyDayOfWeek=周.星期一;
    MyDayOfWeek没有什么成员,所以不会有提示。
      

  5.   

    举例说明:
    enum DayOfWeek:int
    {
    星期天=1;
    星期一=2;
    星期二=3;
    ...
    }DayOfWeek MyDayOfWeek=DayOfWeek.星期一;
    MyDayOfWeek没有什么成员,所以不会有提示。