1 using System; 2 3 namespace C_9_4 4 { 5 class Program 6 { 7 enum Gun {AK47=5,M4A1,M16=1,UZI,SB} 8 //类型声明应放在main函数前面 9 static void Main(string[] args) 10 { 11 Gun g1, g2,g3,g4,g5,g6; 12 Console.WriteLine("AK47={0} M4A1={1} M16={2} UZI={3} SB={4} ", Gun.AK47 ,Gun.M4A1 ,Gun.M16 ,Gun.UZI ,Gun.SB ); 13 //这里不单单可以转换成int类型来显示对应数据后面的数据,也可用其他形式来显示,注意不能使用string型 14 Console.WriteLine("AK47={0} M4A1={1} M16={2} UZI={3} SB={4} ", (int)Gun.AK47, (int)Gun.M4A1, (int)Gun.M16, (double )Gun.UZI, (char)(Gun.SB+65)); 15 //这里我们改变了SB的类型,在加上65后强制转换成了char类型。 16 g1 = Gun.AK47; 17 g2 = g1 + 2;//不是指针,这只会输出计算值。 18 g3 = g2 + 10; 19 g4 = (Gun)666;//但是可以强行转换成枚举gun类型。 20 //注意,虽然Gun里面是int型,但是int不等于枚举类的int,所以任要强制转换。 21 g5 =(Gun )'c';//char 22 g6 =(Gun)3.14;//double 23 24 //g4 = "666"; 25 //g4 = 10; 26 //g1,g2,g3,g4这种枚举变量可以像普通变量一样访问和计算,但他并不是普通变量,不能像普通变量那样赋值操作 27 Console.WriteLine("g1={0} g2={1} g3={2} g4={3} g5={4} g6={5} ", g1,g2,g3,g4,g5,g6); 28 Console.WriteLine("g1={0} g2={1} g3={2} g4={3} g5={4} g6={5} ", (int)g1, (int)g2, (int)g3, (int)g4, (int)g5, (int)g6); 29 //这里g6输出了SB而不是3,为什么?因为Gun枚举里面int类型的3对应的就是SB这个符号。 30 Console.WriteLine("g1={0} g2={1} g3={2} g4={3} g5={4} g6={5} ", (int)g1, (int)g2, (int)g3, (int)g4,(char)g5, (double)g6); 31 //这里g6是double类型,我们转换成了(Gun)中的int类型,3.14发生损失,变成了3,所以转换回double类型显示的时候结果只有3了 32 } 33 } 34 }