`
380071587
  • 浏览: 440616 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

关于enum应用的总结

 
阅读更多
1、关于enum的定义
///<summary>
///新闻、下载资源等的审核状态
///</summary>
publicenumApplyStatus
{
///<summary>
///审核不通过
///</summary>
NotPassed=-1,
///<summary>
///未审核
///</summary>
NotApply=0,
///<summary>
///审核通过
///</summary>
Passed=1
}
2、符号名和常数值的互相转换
ApplyStatusstatus=ApplyStatus.NotApply;
intfabNum=(int)status;//转换为常数值。必须使用强制转换。
ApplyStatusstatusString=(ApplyStatus)1;//常数值转换成符号名。如果使用ToString(),则是((ApplyStatus)1).ToString(),注意必须有括号。
stringapplyType=status.ToString();//显示符号名
stringapplyVal=status.ToString("D");//显示常数值
3、获得所有符号名的方法(具体参见Enum类)
foreach(stringsinEnum.GetNames(typeof(ApplyStatus)))
{
Console.WriteLine(s);
}
4、将枚举作为位标志来处理
根据下面的两个例子,粗略地说,一方面,设置标志[Flags<wbr></wbr>]或者[FlagsAttribute],则表明要将符号名列举出<wbr></wbr>来;另一方面,可以通过强制转换,将数字转换为符号名。说不准确。看下面的例子体会吧。注意:
例一:
Fabric fab = Fabric.Cotton | Fabric.Rayon | Fabric.Silk;
Console.WriteLine("MyFabric = {0}", fab);//输出:Fabric.Cotton | Fabric.Rayon | Fabric.Silk;
例二:
class FlagsAttributeDemo
{
// Define an Enum without FlagsAttribute.
enum SingleHue : short
{
Black = 0,
Red = 1,
Green = 2,
Blue = 4
};

// Define an Enum with FlagsAttribute.
[FlagsAttribute]
enum MultiHue : short
{
Black = 0,
Red = 1,
Green = 2,
Blue = 4
};

static void Main( )
{
Console.WriteLine(
"This example of the FlagsAttribute attribute /n" +
"generates the following output." );
Console.WriteLine(
"/nAll possible combinations of values of an /n" +
"Enum without FlagsAttribute:/n" );

// Display all possible combinations of values.
for( int val = 0; val <= 8; val++ )
Console.WriteLine( "{0,3} - {1}", val, ( (SingleHue)val ).ToString( ) );

Console.WriteLine( "/nAll possible combinations of values of an /n" + "Enum with FlagsAttribute:/n" );

// Display all possible combinations of values.
// Also display an invalid value.
for( int val = 0; val <= 8; val++ )
Console.WriteLine ( "{0,3} - {1}", val, ( (MultiHue)val ).ToString( ) );
}
}

/*
This example of the FlagsAttribute attribute
generates the following output.

All possible combinations of values of an
Enum without FlagsAttribute:

0 - Black
1 - Red
2 - Green
3 - 3
4 - Blue
5 - 5
6 - 6
7 - 7
8 - 8

All possible combinations of values of an
Enum with FlagsAttribute:

0 - Black
1 - Red
2 - Green
3 - Red, Green
4 - Blue
5 - Red, Blue
6 - Green, Blue
7 - Red, Green, Blue
8 - 8
*/
5、枚举作为函数参数。经常和switch结合起来使用。下面举例

public static double GetPrice(Fabric fab)
{
switch (fab)
{
case Fabric.Cotton: return (3.55);
case Fabric.Silk: return (5.65);
case Fabric.Wool: return (4.05);
case Fabric.Rayon: return (3.20);
case Fabric.Other: return (2.50);
default: return (0.0);
}
}

6、上面三点一个完整的例子

//1、enum的定义
public enum Fabric : short
{
Cotton = 1,
Silk = 2,
Wool = 3,
Rayon = 8,
Other = 128
}

//将枚举作为参数传递
public static double GetPrice(Fabric fab)
{
switch (fab)
{
case Fabric.Cotton: return (3.55);
case Fabric.Silk : return (5.65);
case Fabric.Wool: return (4.05);
case Fabric.Rayon: return (3.20);
case Fabric.Other: return (2.50);
default: return (0.0);
}
}

public static void Main()
{
Fabric fab = Fabric.Cotton;
int fabNum = (int)fab;
string fabType = fab.ToString();
string fabVal = fab.ToString ("D");
double cost = GetPrice(fab);
Console.WriteLine("fabNum = {0}/nfabType = {1}/nfabVal = {2}/n", fabNum, fabType, fabVal);
Console.WriteLine("cost = {0}", cost);
}

7、Enum类的使用

Enum.IsDefinde、Enum.Parse两种方法经常一起使用,来确定一个值或符号是否是一个枚举的成员,然后创建一个实例。Enum.GetName打印出一个成员的值;Enum<wbr></wbr>.GetNames打印出所有成员的值。其中注意typeof的使用。这一点很重要。

public enum MyFamily
{
YANGZHIPING = 1,
GUANGUIQIN = 2,
YANGHAORAN = 4,
LIWEI = 8,
GUANGUIZHI = 16,
LISIWEN = 32,
LISIHUA = 64,
}

string s = "YANGHAORAN";
if (Enum.IsDefined(typeof(MyFamily), s))
{
MyFamily f = (MyFamily)Enum.Parse(typeof(MyFamily), s);
GetMyFamily(f);
Console.WriteLine("The name is:" + Enum. GetName(typeof(MyFamily), 2));
string[] sa = Enum.GetNames(typeof(MyFamily));
foreach (string ss in sa)
{
Console.WriteLine(ss);
}
}

分享到:
评论

相关推荐

    网络编程总结(IOS)

    网上收集的ios 网络编程总结。 开发Web等网络应用程序的时候,需要确认网络环境,连接情况等信息。如果没有处理它们,是不会通过Apple的审(我们的)查的。 Apple 的 例程 Reachability 中介绍了取得/检测网络状态...

    枚举类型的定义和应用总结

    声明:声明枚举类型用enum开头,例如: 代码如下:enum weekday{sun,mon,tue,wed,thu,fri,sat};上面声明了一个枚举类型weekday,花括号中的sun,mon,。。。。sat等称为枚举元素或枚举常量。 这些枚举常量,不会因为...

    Java EE 编码规范.docx

    目 录 2 一、规范存在的意义 3 ...七、应用命名总结 7 1、 java类 8 2、 字段 8 3、 方法 8 4、 变量 9 5、 Xml文件名 9 6、 URL命名 9 八、J2EE规范 9 1、J2EE规范 9 2、J2EE组件层次 10 3、J2EE的分布应用技术 12

    vc++ 应用源码包_1

    精灵系统,一套MFC渲染引擎,含2D/3D等渲染,效果看源码,IFEngine是整个引擎接口,IFSystem是硬件查询系统,IFApplication是应用程序对象基类。 FlashPlayer播放器4.0的VC++源代码 FreeBird2011最初版(模仿飞鸽,可...

    MYSQL培训经典教程(共两部分) 2/2

    DATE和TIMESTAMP类型 18 1.4.4.3 TIME类型 19 1.4.4.4 YEAR类型 20 1.4.5 字符串类型 20 1.4.5.1 CHAR和VARCHAR类型 21 1.4.5.2 BLOB和TEXT类型 23 1.4.5.3 ENUM和SET类型 24 1.4.6总结 26 ...

    vc++ 应用源码包_2

    精灵系统,一套MFC渲染引擎,含2D/3D等渲染,效果看源码,IFEngine是整个引擎接口,IFSystem是硬件查询系统,IFApplication是应用程序对象基类。 FlashPlayer播放器4.0的VC++源代码 FreeBird2011最初版(模仿飞鸽,可...

    MYSQL培训经典教程(共两部分) 1/2

    DATE和TIMESTAMP类型 18 1.4.4.3 TIME类型 19 1.4.4.4 YEAR类型 20 1.4.5 字符串类型 20 1.4.5.1 CHAR和VARCHAR类型 21 1.4.5.2 BLOB和TEXT类型 23 1.4.5.3 ENUM和SET类型 24 1.4.6总结 26 ...

    vc++ 应用源码包_6

    精灵系统,一套MFC渲染引擎,含2D/3D等渲染,效果看源码,IFEngine是整个引擎接口,IFSystem是硬件查询系统,IFApplication是应用程序对象基类。 FlashPlayer播放器4.0的VC++源代码 FreeBird2011最初版(模仿飞鸽,可...

    vc++ 应用源码包_5

    精灵系统,一套MFC渲染引擎,含2D/3D等渲染,效果看源码,IFEngine是整个引擎接口,IFSystem是硬件查询系统,IFApplication是应用程序对象基类。 FlashPlayer播放器4.0的VC++源代码 FreeBird2011最初版(模仿飞鸽,可...

    vc++ 应用源码包_3

    精灵系统,一套MFC渲染引擎,含2D/3D等渲染,效果看源码,IFEngine是整个引擎接口,IFSystem是硬件查询系统,IFApplication是应用程序对象基类。 FlashPlayer播放器4.0的VC++源代码 FreeBird2011最初版(模仿飞鸽,可...

    mysql基础只是总结

    1、右击我的电脑-管理-服务与应用程序-服务-mysql 2、net stop mysql|net start mysql 【mysql的配置文件以及数据位置】 1、安装目录下名为mysql.ini文件 2、默认数据位置 配置文件中字段为datadir 3、配置文件...

    Java JDK 7学习笔记(国内第一本Java 7,前期版本累计销量5万册)

     《Java JDK 7学习笔记》是作者多年来教学实践的经验总结,汇集了学员在教学过程中遇到的概念、操作、应用或认证考试上的各种问题及解决方案。  《Java JDK 7学习笔记》详细介绍了JVM、JRE、Java SE API、JDK与IDE...

    RecapProject-AngularUi

    总结该项目是使用版本11.2.3生成的。开发服务器为开发服务器运行ng serve 。 导航到http://localhost:4200/ 。 如果您更改任何源文件,该应用程序将自动重新加载。代码脚手架运行ng generate component component-...

    整理后java开发全套达内学习笔记(含练习)

    enum (关键字) execute vt.执行 ['eksikju:t] exhibit v.显示, 陈列 [ig'zibit] exist 存在, 发生 [ig'zist] '(SQL关键字 exists) extends (关键字) 继承、扩展 [ik'stend] false (关键字) final (关键字) ...

    亮剑.NET深入体验与实战精要2

    第6章 关于XML 249 6.1 XML概述 250 6.1.1 XML和HTML有什么区别 250 6.1.2 XML的优势 250 6.2 文档结构与基本语法 251 6.3 XML操作 253 6.3.1 XmlDocument创建XML文档 253 6.3.2 XmlTextWriter创建XML文档 254 6.3.3...

    亮剑.NET深入体验与实战精要3

    第6章 关于XML 249 6.1 XML概述 250 6.1.1 XML和HTML有什么区别 250 6.1.2 XML的优势 250 6.2 文档结构与基本语法 251 6.3 XML操作 253 6.3.1 XmlDocument创建XML文档 253 6.3.2 XmlTextWriter创建XML文档 254 6.3.3...

    vc++ 开发实例源码包

    ----------VC应用开发 [Visual.C..编程技巧精选500例]源代码. 内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件...

    mfc可视化计算器编程

    enum { IDD = IDD_ABOUTBOX }; //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ...

    uboott移植实验手册及技术文档

    typedef enum { NFCE_LOW, NFCE_HIGH } NFCE_STATE; static inline void NF_Conf(u16 conf) { S3C2410_NAND * const nand = S3C2410_GetBase_NAND(); nand-&gt;NFCONF = conf; } Create PDF files without...

Global site tag (gtag.js) - Google Analytics