枚举 

收藏的博文连接

  枚举类型声明为一组相关的符号常数定义了一个类型名称。枚举用于“多项选择”场合,就是程序运行时从编译时已经设定的固定数目的“选择”中做出决定。

  枚举类型(也称为枚举):该类型可以是除 char以外的任何整型(重点)。 枚举元素的默认基础类型为 int.准许使用的枚举类型有 byte、sbyte、short、ushort、int、uint、long 或 ulong。其作用就是规范代码,通常情况下,最好是在命名空间内直接定义枚举,以便该命名空间中的所有类都能够同样方便地访问它。

事例演示:enum语法

 public enum QQState  //枚举成员默认为Int32类型,也可以自己定义.冒号+整数类型除
{
OnLine = , //默认从0,也可以指定数值
OffLine, //数值按递增1的顺序.--2
Leave, //
Busy,
QMe //
}; //定义QQ在线状态的枚举,

enum、int、string之间的相互转换

 //定义枚举变量
QQState enumVariable = QQState.OffLine; //枚举转字符串
string enumStringOne = enumVariable.ToString();//效率低,不推荐.==>OffLine
string enumStringTwo = Enum.GetName(typeof(QQState), enumVariable);//推荐==>OffLine enumVariable也可以换成数值 2 //枚举转int
int enumValueOne = (int)enumVariable; //==> 2
int enumValueTwo = enumVariable.GetHashCode();//HashCode-哈希代码,枚举成员转换成枚举成员的值.
int enumValueThree = Convert.ToInt32(enumVariable);//==> 2 //字符串转枚举
QQState enum1 = (QQState)Enum.Parse(typeof(QQState), enumStringOne); //==>OffLine
QQState enum2 = (QQState)Enum.Parse(typeof(QQState), ""); //枚举成员值加双引号 ==>Busy //字符串转值
int num1 = (int)Enum.Parse(typeof(QQState), enumStringOne); //==>2 //值转枚举
QQState enum2 = (QQState); //已知数值和枚举名,求出值所指的枚举值 ==>Qme
QQState enum3 = (QQState)Enum.ToObject(typeof(QQState), ); //==>Busy //值转字符串
string enumStringThree = Enum.GetName(typeof(QQState), enum2);

示例演示如何使用Enum.CompareTo 方法

     /// <summary>
/// 记录各种车的车门个数.
/// </summary>
public enum VehicleDoors //车门
{
Motorbike = , //摩托车
Sportscar = , //跑车
Sedan = , //轿车
Hatchback = //厢车
}; //声明枚举类型的变量.
VehicleDoors myVeh = VehicleDoors.Sportscar;
VehicleDoors yourVeh = VehicleDoors.Motorbike;
VehicleDoors otherVeh = VehicleDoors.Sedan;
//该示例显示以下输出:
// Sportscar比Motorbike有更多的门吗?
//是的
//
//Sportscar比Sedan有更多的门吗?
//不 Console.WriteLine("Does a {0} have more doors than a {1}?", myVeh, yourVeh);
//Environment.NewLine和 “\r\n” 回车换行的作用类似
Console.WriteLine("{0}{1}", myVeh.CompareTo(yourVeh) > ? "Yes" : "No", Environment.NewLine);
Console.WriteLine("Does a {0} have more doors than a {1}?", myVeh, otherVeh);
Console.WriteLine("{0}", myVeh.CompareTo(otherVeh) > ? "Yes" : "No");//三目运算符返回"Yes" 还是 "No"

示例演示Enum.Parse、Enum.GetName、Enum.GetName方法

 public enum Colors
{
Red, //红色
Green, //绿色
Blue, //蓝色
Yellow //黄色
}; public enum Styles
{
Plaid = , //格纹
Striped = , //条文
Tartan = , //格子呢绒
Corduroy = //灯芯绒
}; string colorName = Enum.GetName(typeof(Colors), ); //返回string类型,枚举元素名字
Console.WriteLine("颜色枚举的第四个值为 {0}", colorName); /*初识foreach循环用于列举出集合中所有的元素
* foreach语句中的表达式由关键字in隔开的两个项组成。in右边的项是集合名
* in左边的项是变量名,用来存放该集合中的每个元素。
* 该循环的运行过程如下:每一次循环时,从集合中取出一个新的元素值。
* 放到只读变量中去,如果括号中的整个表达式返回值为true,foreach块中的语句就能够执行。
* 一旦集合中的元素都已经被访问到,整个表达式的值为false,控制流程就转入到foreach块后面的执行语句。
*/
foreach (var name in Enum.GetNames(typeof(Styles)))
{
Console.WriteLine("样式枚举基数是{0}对应的枚举名字{1}{2}",
(int)Enum.Parse(typeof(Styles),name),name,"\r\n");
//Type type = name.GetType();
//Console.WriteLine("我是什么类型{0}", type);
}

最新文章

  1. neo4j-访问提示No authorization header supplied.
  2. 【Windows编程】系列第三篇:文本字符输出
  3. 详解JS跨域问题
  4. @autoreleasepool在MRC和ARC中的区别
  5. python基于LeanCloud的短信验证
  6. JavaScript Patterns 4.6 Immediate Object Initialization
  7. POJ:最长上升子序列
  8. C# webkit.net的简单使用
  9. AVL树相关操作
  10. sql语句中查询出的数据添加一列,并且添加默认值
  11. Memcached for windows x64 x32 安装
  12. Django学习中遇到的问题(1)django migration No migrations to apply
  13. 深入浅出Java MVC(Model View Controller) ---- (JSP + servlet + javabean实例)
  14. Postman学习之【压力测试】
  15. [Swift]LeetCode409. 最长回文串 | Longest Palindrome
  16. 理解Python闭包概念
  17. web页面实现文件下载的几种方法
  18. jsoi2018 R1R2
  19. centos6.5上配置apache + mysql + php4.4.9 + eaccelerator-0.9.5 + postgresql-8.3.13 备忘
  20. tmpFile.renameTo(classFile) failed解决

热门文章

  1. jqGrid 添加 合计行 footDate
  2. VIJOS-P1282 佳佳的魔法照片 排序
  3. junit基础学习之-测试controller层(2)
  4. 倍增求LCA(最近公共祖先)
  5. Yota Phone宣告破产
  6. 关于SI522替代FM17522和MFRC522的资料对比
  7. 【LeetCode 】N皇后II
  8. 解决 .NET CORE3.0 MVC视图层不即时编译
  9. jquery判断当前浏览器是否是IE
  10. VS2013的工程移植到VS2008