目录
1.实例目标
了解枚举类型适合的环境,枚举类型的声明,以及枚举类型的特征。
2.编程思路
2.1 enum关键字用于声明枚举类型,即一种由一组称为枚举数列表的命名常数组成的独特类型;
2.2 每种枚举类型均有一种基础类型,此基础类型可以是除char类型外的任何整型;
2.3 声明enum变量格式: 属性 修饰符 enum 变量名 : 基础类型{ 枚举列表 } 其中修饰符/属性/基础类型都是可选的,如允许修饰符有public/private/protected/internal/new;
2.4 其基础类型是指分配给每个枚举数的类型,可以是除char类型外的整型之一,默认为int;
2.5 枚举列表是由逗号分隔的枚举数标识符,也可以包括值分配,默认情况下,第一个枚举数的值为0,后面每个枚举数的值依次递增1;
2.6 枚举数可以具有重写默认值的初始值设定项;
2.7 基础类型指为每个枚举数分配的存储大小,但是从enum类型到整型的转换需要用显式类型转换来完成。
3.编程步骤
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PRO14
{
class EnumAPP
{
//声明一个枚举类型Weekday,基类为int,访问范围为public
public enum Weekday
{
Sun,Mon,Tue,Wed,Thu,Fri,Sat
}
public static void Main(string[] args)
{
//用枚举类型Weekday声明变量并赋初值
Weekday wd1 = Weekday.Mon;
Console.WriteLine("每周的工作日从{0}开始", wd1);
Weekday wd2 = Weekday.Fri;
Console.WriteLine("到{0}结束", wd2);
//枚举类型变量用于计算
Console.WriteLine("每周有{0}个工作日", wd2 - wd1 +1);
Console.WriteLine();
//枚举类型变量作为函数的参数
Console.WriteLine("Mon之后是{0}", Nextday(Weekday.Mon));
Console.WriteLine();
//使用枚举类型的GetNames()方法
foreach(string sl in Weekday.GetNames(typeof(Weekday)))
{
Console.Write(sl + "");
}
Console.WriteLine("\n");
//从命令行读取枚举类型变量的值
Console.Write("今天是星期几?");
Weekday wd3 = (Weekday)Weekday.Parse(typeof(Weekday), Console.ReadLine());
Console.WriteLine("明天是{0}", Nextday(wd3));
Console.WriteLine();
//比较枚举类型的值
Console.Write("体育课在星期几?");
wd1 = (Weekday)Weekday.Parse(typeof(Weekday), Console.ReadLine());
Console.Write("物理试验在星期几?");
wd2 = (Weekday)Weekday.Parse(typeof(Weekday), Console.ReadLine());
if(wd1.CompareTo(wd2) == 0)
{
Console.WriteLine("糟糕,在同一天。");
}
else
{
Console.WriteLine("没事,不在同一天");
}
Console.ReadKey();
}
//功能:得到某日的下一日(星期几)
//参数: wd:枚举类型Weekday
//返回值:枚举类型Weekday
public static Weekday Nextday(Weekday wd)
{
Weekday wdnext;
if(wd == Weekday.Sat)
{
wdnext = Weekday.Sun;
}
else
{
wdnext = wd + 1;
}
return wdnext;
}
}
}