这是自己练习的例子,把例子总结下来,供练习之用。还是看例子吧。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
enum orientation
{
east,
south,
west,
north
}
//2.关于枚举的类型。默认是int,但可以重新定义为
enum tiangan : byte//可以为byte、short、ushort、uint、long和ulong等数值类型
{
jia = 5,
yi,
bing,
ding
}
//3.默认情况下每个值从0开始。但可以重新赋值,后续值为前值+1
enum dizhi
{
zi = 11,
chou = 12,
yin,//=13,值自动加1
mao,//=14
wu,//=15
ji,//=16
geng = 11,
xin,//=12
ren = chou,//=2
gui//=13
}
//4.枚举不可以有重复的名称,但是可以有重复的值。
enum color
{
red = 0,
orange = 0,
yellow,
green,
black,
blue,
purple
}
struct route
{
public orientation direction;//定义枚举类型
public double distance;
}
class Program
{
//1.关于enum的定义。
//是程序员自己定义的值类型。
//枚举明确指定对变量有效的值,
//枚举提供了一种有效的方式来定义可能分配给变量的一组已命名整数常量。
//5.专门处理枚举的是Enum类(静态类)。GetName和GetNames是两个重要方法
//关于位标志以后专门学习
static void Main(string[] args)
{
orientation ori = orientation.south;
Console.WriteLine($"My direction is {ori}");
//使用强制转换获得枚举值
int jiazi = (int)dizhi.yin;
Console.WriteLine($"jiazi的数值是{jiazi}");
Console.WriteLine($"tiangan的第二个是:{Enum.GetName(typeof(tiangan),2)}");//第一个参数是enum对象,第二个是枚举的值
foreach(var i in Enum.GetNames(typeof(tiangan)))//获得所有枚举
Console.WriteLine(i);
//
route myRoute;
int myDirection = -1;
double myDistance;
Console.WriteLine("1) North\n2) South\n3) East\n4) West");
do
{
Console.WriteLine("Select a direction:");
myDirection = Convert.ToInt32(Console.ReadLine());
}
while((myDirection<1)||(
myDirection>4));
//判断方向和路程
Console.WriteLine("Input a distance:");
myDistance = Convert.ToDouble(Console.ReadLine());//调用Convert类确保输入正确
myRoute.direction = (orientation)myDirection;//强制类型转换,把整数转化为枚举
myRoute.distance = myDistance;
Console.WriteLine($"myRoute specifies a direction of {myRoute.direction} and a distance of {myRoute.distance}");
}
}
}
输出是: