首页 C#枚举14

C#枚举14

举报
开通vip

C#枚举14枚举 285 14.1 枚举声明 285 14.2 枚举修饰符 286 14.3 枚举成员 286 14.4 System.Enum 类型 288 14.5 枚举值和运算 288 1.枚举 枚举类型 (enum type) 是一种独特的值类型(第 4.1 节),它用于声明一组命名的常量。 在以下示例中: enum Color { Red, Green, Blue } 声明一个名为 Color 的枚举类型,该类型具有三个成员:Red、Green 和 Blue。 1.1枚举声明 枚举声明用于声明新的枚举类型。枚举声明以...

C#枚举14
枚举 285 14.1 枚举声明 285 14.2 枚举修饰符 286 14.3 枚举成员 286 14.4 System.Enum 类型 288 14.5 枚举值和运算 288 1.枚举 枚举类型 (enum type) 是一种独特的值类型(第 4.1 节),它用于声明一组命名的常量。 在以下示例中: enum Color { Red, Green, Blue } 声明一个名为 Color 的枚举类型,该类型具有三个成员:Red、Green 和 Blue。 1.1枚举声明 枚举声明用于声明新的枚举类型。枚举声明以关键字 enum 开始,然后定义该枚举的名称、可访问性、基础类型和成员。 enum-declaration: attributesopt enum-modifiersopt enum identifier enum-baseopt enum-body ;opt enum-base: : integral-type enum-body: { enum-member-declarationsopt } { enum-member-declarations , } 每个枚举类型都有一个相应的整型类型,称为该枚举类型的基础类型 (underlying type)。此基础类型必须能够 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示该枚举中定义的所有枚举数值。枚举声明可以显式地声明 byte、sbyte、short、ushort、int、uint、long 或 ulong 类型作为对应的基础类型。请注意 char 不能用作基础类型。没有显式地声明基础类型的枚举声明意味着所对应的基础类型是 int。 在以下示例中: enum Color: long { Red, Green, Blue } 声明了一个基础类型为 long 的枚举。开发人员可以像本示例一样选择使用 long 基础类型,以便能够使用在 long 范围内而不是在 int 范围内的值,或者保留此选项供将来使用。 1.2枚举修饰符 enum-declaration 可以根据需要包含一个枚举修饰符序列: enum-modifiers: enum-modifier enum-modifiers enum-modifier enum-modifier: new public protected internal private 同一修饰符在一个枚举声明中多次出现属于编译时错误。 枚举声明的修饰符与类声明(第 10.1.1 节)的修饰符具有同样的意义。然而请注意,在枚举声明中不允许使用 abstract 和 sealed 修饰符。枚举不能是抽象的,也不允许派生。 1.3枚举成员 枚举类型声明体用于定义零个或多个枚举成员,这些成员是该枚举类型的命名常量。任意两个枚举成员不能具有相同的名称。 enum-member-declarations: enum-member-declaration enum-member-declarations , enum-member-declaration enum-member-declaration: attributesopt identifier attributesopt identifier = constant-expression 每个枚举成员均具有相关联的常数值。此值的类型就是包含了它的那个枚举的基础类型。每个枚举成员的常数值必须在该枚举的基础类型的范围之内。在以下示例中: enum Color: uint { Red = -1, Green = -2, Blue = -3 } 产生编译时错误,原因是常数值 -1、-2 和 –3 不在基础整型 uint 的范围内。 多个枚举成员可以共享同一个关联值。在以下示例中: enum Color { Red, Green, Blue, Max = Blue } 演示一个枚举,其中的两个枚举成员(Blue 和 Max)具有相同的关联值。 一个枚举成员的关联值或隐式地、或显式地被赋值。如果枚举成员的声明中具有 constant-expression 初始值设定项,则该常量表达式的值(它隐式转换为枚举的基础类型)就是该枚举成员的关联值。如果枚举成员的声明不具有初始值设定项,则它的关联值按下面规则隐式地设置: ​ 如果枚举成员是在枚举类型中声明的第一个枚举成员,则它的关联值为零。 ​ 否则,枚举成员的关联值是通过将前一个枚举成员(按照文本顺序)的关联值加 1 得到的。这样增加后的值必须在该基础类型可表示的值的范围内;否则,会出现编译时错误。 在以下示例中: using System; enum Color { Red, Green = 10, Blue } class Test { static void Main() { Console.WriteLine(StringFromColor(Color.Red)); Console.WriteLine(StringFromColor(Color.Green)); Console.WriteLine(StringFromColor(Color.Blue)); } static string StringFromColor(Color c) { switch (c) { case Color.Red: return String.Format("Red = {0}", (int) c); case Color.Green: return String.Format("Green = {0}", (int) c); case Color.Blue: return String.Format("Blue = {0}", (int) c); default: return "Invalid color"; } } } 输出枚举成员名称和它们的关联值。输出为: Red = 0 Green = 10 Blue = 11 原因如下: ​ 枚举成员 Red 被自动赋予零值(因为它不具有初始值设定项并且是第一个枚举成员); ​ 枚举成员 Green 被显式赋予值 10; ​ 而枚举成员 Blue 被自动赋予比文本上位于它前面的成员大 1 的值。 枚举成员的关联值不能直接或间接地使用它自己的关联枚举成员的值。除了这个循环性限制外,枚举成员初始值设定项可以自由地引用其他的枚举成员初始值设定项,而不必考虑它们所在的文本位置的排列顺序。在枚举成员初始值设定项内,其他枚举成员的值始终被视为属于所对应的基础类型,因此在引用其他枚举成员时,没有必要使用强制转换。 在以下示例中: enum Circular { A = B, B } 产生编译时错误,因为 A 和 B 的声明是循环的。A 显式依赖于 B,而 B 隐式依赖于 A。 枚举成员的命名方式和作用范围与类中的字段完全类似。枚举成员的范围是包含了它的枚举类型的体。在该范围内,枚举成员可以用它们的简单名称引用。在所有其他代码中,枚举成员的名称必须用它的枚举类型的名称限定。枚举成员不具有任何声明可访问性,如果一个枚举类型是可访问的,则它所含的所有枚举成员都是可访问的。 1.4System.Enum 类型 System.Enum 类型是所有枚举类型的抽象基类(它是一种与枚举类型的基础类型不同的独特类型),并且从 System.Enum 继承的成员在任何枚举类型中都可用。存在从任何枚举类型到 System.Enum 的装箱转换(第 4.3.1 节),并且存在从 System.Enum 到任何枚举类型的拆箱转换(第 4.3.2 节)。 请注意 System.Enum 本身不是 enum-type。相反,它是一个 class-type,所有 enum-type 都是从它派生的。类型 System.Enum 从类型 System.ValueType(第 4.1.1 节)派生,而后者又从类型 object 派生。在运行时,类型 System.Enum 的值可以是 null 或是对任何枚举类型的装箱值的引用。 1.5枚举值和运算 每个枚举类型都定义了一个独特类型;需要使用显式枚举转换(第 6.2.2 节)在枚举类型和整型之间或在两个枚举类型之间进行转换。一个枚举类型的值域不受它的枚举成员限制。具体而言,一个枚举的基础类型的任何一个值都可以被强制转换为该枚举类型,成为该枚举类型的一个独特的有效值。 枚举成员所属的类型就是声明了它们的那个枚举(出现在其他枚举成员初始值设定项中时除外:请参见第 14.3 节)。在枚举类型 E 中声明且关联值为 v 的枚举成员的值为 (E)v。 以下运算符可以用在枚举类型的值上:==、!=、<、>、<=、>=(第 7.9.5 节)、二元 +(第 7.7.4 节)、二元 ‑(第 7.7.5 节)、^、&、|(第 7.10.2 节)、~(第 7.6.4 节)、++、--(第 7.5.9 节和第 7.6.5 节)和 sizeof(第 18.5.4 节)。 每个枚举 XE "enum" \t "See also Enum" 类型都自动派生自类 System.Enum(而该类又派生自 System.ValueType 和 object) XE "Enum" XE "System.Enum" \t "See Enum" XE "Enum" XE "System.Enum" \t "See Enum" 。因此,此类的派生 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 和属性可以用在枚举类型的值上。
本文档为【C#枚举14】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_181201
暂无简介~
格式:doc
大小:51KB
软件:Word
页数:5
分类:互联网
上传时间:2011-03-02
浏览量:19