C#枚举类型

 

 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}\nM4A1={1}\nM16={2}\nUZI={3}\nSB={4}\n", Gun.AK47 ,Gun.M4A1 ,Gun.M16 ,Gun.UZI ,Gun.SB );
13             //这里不单单可以转换成int类型来显示对应数据后面的数据,也可用其他形式来显示,注意不能使用string型
14             Console.WriteLine("AK47={0}\nM4A1={1}\nM16={2}\nUZI={3}\nSB={4}\n", (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}\ng2={1}\ng3={2}\ng4={3}\ng5={4}\ng6={5}\n", g1,g2,g3,g4,g5,g6);
28             Console.WriteLine("g1={0}\ng2={1}\ng3={2}\ng4={3}\ng5={4}\ng6={5}\n", (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}\ng2={1}\ng3={2}\ng4={3}\ng5={4}\ng6={5}\n", (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 }

 

posted @ 2020-09-05 16:15  想活出点人样  阅读(178)  评论(0编辑  收藏  举报