enum-C#数据类型

转载 2007年09月12日 17:46:00
出处:http://msdn2.microsoft.com/zh-cn/library/sbbt4032(VS.80).aspx

C# 语言参考
enum(C# 参考)

 

enum 关键字用于声明枚举,即一种由一组称为枚举数列表的命名常数组成的独特类型。每种枚举类型都有基础类型,该类型可以是除 char 以外的任何整型。枚举元素的默认基础类型为 int。默认情况下,第一个枚举数的值为 0,后面每个枚举数的值依次递增 1。例如:

      enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri};

在此枚举中,Sat0Sun1Mon2,依此类推。枚举数可以具有重写默认值的初始值设定项。例如:

      enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};

在此枚举中,强制元素序列从 1 而不是 0 开始。

可以给 Days 类型的变量赋以基础类型范围内的任何值,所赋的值不限于已命名的常数。

enum E 的默认值为表达式 (E)0 产生的值。

Note注意

枚举数的名称中不能包含空白。

基础类型指定为每个枚举数分配的存储大小。但是,从 enum 类型到整型的转换需要用显式类型转换来完成。例如,下面的语句通过使用强制转换从 enum 转换为 int,将枚举数 Sun 赋给 int 类型的变量:

int x = (int)Days.Sun;

System.FlagsAttribute 应用于某个枚举时,如果该枚举包含一些使用按位“或”运算组合的元素,这时您会注意到该属性在用于某些工具时会影响 enum 的行为。当使用诸如 Console 类方法、表达式计算器这样的工具时,可以注意到这些变化。(请参见示例 3)。

可靠编程可靠编程
示例示例

在此例中,声明了一个枚举 Days。两个枚举数被显式转换为整数并赋给整型变量。

// keyword_enum.cs
// enum initialization:
using System;
public class EnumTest 
{
    enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};

    static void Main() 
    {
        int x = (int)Days.Sun;
        int y = (int)Days.Fri;
        Console.WriteLine("Sun = {0}", x);
        Console.WriteLine("Fri = {0}", y);
    }
}

输出

Sun = 2
Fri = 7

在此例中,使用了基类选项来声明成员类型是 longenum。注意,即使枚举的基础类型是 long,枚举成员仍然必须使用强制转换显式转换为 long 类型。

// keyword_enum2.cs
// Using long enumerators
using System;
public class EnumTest 
{
    enum Range :long {Max = 2147483648L, Min = 255L};
    static void Main() 
    {
        long x = (long)Range.Max;
        long y = (long)Range.Min;
        Console.WriteLine("Max = {0}", x);
        Console.WriteLine("Min = {0}", y);
    }
}

输出

Max = 2147483648
Min = 255

下面的代码示例阐释 enum 声明上的 System.FlagsAttribute 属性的使用和效果。

// enumFlags.cs
// Using the FlagsAttribute on enumerations.
using System;

[Flags]
public enum CarOptions
{
    SunRoof = 0x01,
    Spoiler = 0x02,
    FogLights = 0x04,
    TintedWindows = 0x08,
}

class FlagTest
{
    static void Main()
    {
        CarOptions options = CarOptions.SunRoof | CarOptions.FogLights;
        Console.WriteLine(options);
        Console.WriteLine((int)options);
    }
}

输出

SunRoof, FogLights
5
复制代码
注释注释
注释注释
请参见请参见

相关文章推荐

Token ,Cookie和Session的区别--学习笔记

传统身份验证HTTP 是一种没有状态的协议,也就是它并不知道是谁是访问应用。这里我们把用户看成是客户端,客户端使用用户名还有密码通过了身份验证,不过下回这个客户端再发送请求时候,还得再验证一下。解决的...

(05) 触发器(Trigger)的维护困境

触发器(trigger)在维护中的斑斑劣迹,我碰到的那是数不胜数.         首先不是说trigger不好,数据库都提供这个技术,自然有它的好处.  其中之一, 处理某些业务时特别简便.    ...

SSO单点登录使用token机制来验证用户的安全性

登录的业务逻辑 {     http:是短连接.           服务器如何判断当前用户是否登录?          // ...

HTTP/2和WebSocket及HTML5资料整理--WebSocket/HTML5篇

WebSocket比HTTP/2早发布几年,它是一个客户端与服务端间的通信协议,归属于HTML5. 它在开始时利用HTTP协议通讯。 来确认对方是否支持WebSocket。当握手成功后,采用TCP传输...

提升APNS消息推送质量的一些想法和验证程序

今天在想用什么样的方式,才能改善提高大级别时APNS的推送质量.有了个初步的想法。      首先简单列一下,APNS常见的一些限制和要注意的地方:    1.频繁建立和断开连接,被当成受到攻击,...

达梦(1) 数据库安装

最近在看达梦数据库。功能看起来应当不错,就是资料少得可怜,附的文档估计是更新不即时,很多都没说清楚或没说。 在这记录下数据库的安装,非常简单。 一。安装在指定用户下。 1. DM数据库系...

超浓缩DIY小马

以下是代码片段:写入木马后直接访问根目录下的 j.asp 就行了~~··

介绍一些有助于写出更好Go程序的工具

前面讲了测试和性能调优之类,这篇主要讲如何利用Go提供的一些工具和参数,帮助写出更好的代码. 一. golint 检查代码规范 二. go vet 检查代码存在的隐患 三. -race 检查是否有ra...

Windows系统下整合Tomcat服务器和Apache服务器

本文使用软件的下载地址(1)Windows 2000 Service Pack 3.exe  下载地址:http://download.microsoft.com/download/win2000pl...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)