复习:
从上一节,可以看到2.0的数组有两个直接突破:a.从“原型数组”向引用类型的突破;b.嵌套数组元素间维度和容量可变.
数组暂时告一段落,进入与数组相关的下一个话题。
MSDN,C#2.0:
一、枚举关键字
1、基础
(1)枚举是指一个唯一的类型,它包含了一套名字常量,后者被称为枚举器列表(enumerator list);
(2)枚举使用关键字enum声明,语法为
enum 枚举名[:类型名称]{枚举元素1,枚举元素2,枚举元素3...枚举元素n};
(3)枚举类型使用除char以外的任何基础数据类型(underlying type)进行存储;默认的是整型,表示为int32;
(4)缺省情况下,枚举元素列表的第一个元素是从数值0开始,随后的元素值递增幅度1;显式地为元素赋值,其值以所赋值为准;
(5)enum E的缺省值是表达式(E)0;
(6)与特性关联使用(此部分不感兴趣可跳过):当枚举的元素由位字段的或操作(bitwise OR operation)组成,并且使用System.FlagsAttribute时,enum关键字的行为受特性(attribute)的影响而发生变化,可以使用控制台类方法(console class method)、表达式计算器(expression evaluator)等写小程序观察。具体可见http://msdn.microsoft.com/en-us/library/system.flagsattribute(VS.80).aspx
2、注意事项
(1)枚举元素名不能包含空格;
(2)枚举元素的类型转换为整数类型,须进行显式转换;如int x = (int)Days.Sun;
3、建议(robust programming)
给枚举增加新值或改变枚举成员的值,可能会导致源代码依赖(dependant source code)问题,例如,在使用枚举的switch分支语句中。
//用途示例 // 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); } }
二、Enum类型
(1)提供枚举的基类;语法为
[SerializableAttribute]
[ComVisibleAttribute(true)]
public abstract class Enum : ValueType, IComparable, IFormattable, IConvertible
(2)Enum提供比较该类实例的方法、把实例值转换为字符串或反之、创建指定枚举的实例;
(3)可以把枚举视为位字段,这属于FlagsAttribute的范畴,不在此多说;
(4)枚举类型继承于值类型(ValuteType),实现了IComparable、IFormattable和IConvertible接口。使用Convert类自定义转换,以代替该类IConvertible的显式接口成员实现。
//用途示例 using System; public class EnumTest { enum Days { Saturday, Sunday, Monday, Tuesday, Wednesday, Thursday, Friday }; enum BoilingPoints { Celsius = 100, Fahrenheit = 212 }; [FlagsAttribute] enum Colors { Red = 1, Green = 2, Blue = 4, Yellow = 8 }; public static void Main() { Type weekdays = typeof(Days); Type boiling = typeof(BoilingPoints); Console.WriteLine("The days of the week, and their corresponding values in the Days Enum are:"); foreach ( string s in Enum.GetNames(weekdays) ) Console.WriteLine( "{0,-11}= {1}", s, Enum.Format( weekdays, Enum.Parse(weekdays, s), "d")); Console.WriteLine(); Console.WriteLine("Enums can also be created which have values that represent some meaningful amount."); Console.WriteLine("The BoilingPoints Enum defines the following items, and corresponding values:"); foreach ( string s in Enum.GetNames(boiling) ) Console.WriteLine( "{0,-11}= {1}", s, Enum.Format(boiling, Enum.Parse(boiling, s), "d")); Colors myColors = Colors.Red | Colors.Blue | Colors.Yellow; Console.WriteLine(); Console.WriteLine("myColors holds a combination of colors. Namely: {0}", myColors); } }
----------------------------------------------------------------------------------------------------
小结:枚举是属于数值类型,即在栈中创建。并且,相对于数组,它提供了方便地使用性。争论的焦点是它带有“硬代码”的特性,一般作为底层支撑字典应用。
发表评论
-
ZT,一篇好文
2010-05-03 10:33 1001读读语言大牛们(其中有位是Anders)这篇文章,会很受益。( ... -
关于“匿名方法”与“lambda操作符”的实现
2010-03-24 22:29 873在<关于“回调”的实现>一文中,我们探讨了使用委托 ... -
effective hierarchy(二)之 函数合辑(2)
2009-09-16 21:29 728介绍: 本节我们来看看另外一种封装,构建件。构建件作为 ... -
effective hierarchy(二)之 函数合辑(1)
2009-08-19 14:53 781“暴露”阶段:值-> ... -
effective hierarchy(一)之 基本概念(8)
2009-07-02 23:39 686MSDN,C#2 一、语句 1.结束点和可达性(en ... -
effective hierarchy(一)之 基本概念结束篇
2009-06-30 15:41 665一、函数/功能成员(fun ... -
effective hierarchy(一)之 基本概念(7)
2009-06-23 21:15 937以下可跳过: [立记保留:到现在为止,我满意的是认真的精神。 ... -
effective hierarchy(一)之 基本概念(6)
2009-06-21 00:34 951MSDN,C#2.0 转换(conversions) ... -
effective hierarchy(一)之 基本概念(5)
2009-06-18 22:16 718MSDN,C#2.0 变量基本点: 变量代表 ... -
effective hierarchy(一)之 基本概念(4)
2009-06-15 15:59 728MSDN,C#2.0: 一、名字空间和类型名称(nam ... -
effective hierarchy(一)之 基本概念(3)
2009-06-14 15:00 732MSDN,C#2.0: 一、签 ... -
effective hierarchy(一)之 基本概念(2)
2009-06-13 18:22 828MSDN:基本概念 一、 ... -
effective hierarchy(一) 之基本概念(1)
2009-06-11 09:37 780我告诫自己,不要忽略简单的东西,又要扎实。所以这一篇开始,专门 ... -
effective hierarchy(一)之 属性与索引器
2009-06-07 14:07 1152编程笺言:“优良的设计 ... -
effective hierarchy(一)之 从array说起(4)
2009-06-07 00:53 805回顾:上一节中,我们 ... -
effective hierarchy(一)之 从array说起(3)
2009-06-06 21:20 702回顾: 从上一节中,可以看出枚举的易用性对数组使用的启示意义 ... -
effective hierarchy(一)之 从array说起(1)
2009-05-29 13:59 892MSDN(c#2.0): 数组的元义是 ... -
effective hierarchy(一)之 C#中的new
2009-05-27 23:21 841MSDN(c#2.0): 在msdn中,指出new的三种用法。 ...
相关推荐
Hierarchy PRO是一个高级的Hierarchy面板扩展,它提供了更多的自定义选项和便捷的功能。此插件可能包括但不限于以下特性: 1. **过滤与排序**:Hierarchy PRO允许用户根据需求筛选和排序场景中的游戏对象,比如按...
Hierarchy2 v1.3.10.0
Hierarchy Viewer 可以从 Android SDK 工具包中启动,通过命令行的方式可以启动。启动后,可以看到当前正在运行中的模拟器的信息,可以鼠标点击已经启动了的 Activity。 四、Inspecting Screenshots Inspecting ...
### SAP BW Hierarchy Extractor:从SAP R3系统抽取自定义层级至BW系统的架构 #### 业务场景 在很多企业环境中,管理者需要能够访问其下属员工所负责的数据。尽管SAP Business Warehouse (BW)提供了丰富的业务内容...
解决这个启动 View Hierarchy时的这个bug: hierarchy viewer unable to debug device
Hierarchy Viewer是Android SDK中自带的一款强大的UI设计与检测工具。它位于Android SDK的`tools`目录下,文件名为`hierarchyviewer.bat`。对于Android开发者来说,这是一个不可或缺的工具,能够帮助他们在开发过程...
效果及使用方法:https://blog.csdn.net/qq_26318597/article/details/131373576 1.导入插件包 2.选中Hierarchy中的物体 3.右键选择“复制Hierarchy路径” 4.Ctrl + V 粘贴
#### 一、Hierarchy Viewer概览 Hierarchy Viewer是一款由Google提供的强大工具,专为Android开发者设计,旨在辅助界面设计、调试及优化工作流程。通过直观地展示应用UI的层级结构,它使得开发者能够轻松识别布局...
IRQ Hierarchy 的初始化及构建过程详解 IRQ(Interrupt Request)是计算机系统...IRQ hierarchy 的初始化及构建过程是一个复杂的过程,涉及到多个函数和数据结构。理解这些函数和数据结构对于系统的正确运行至关重要。
Unity是世界上最流行的游戏开发引擎之一,它为开发者提供了丰富的工具集来创建交互式3D和2D内容。在Unity中,Hierarchy面板是一个至关重要的组成部分,它显示了场景中的所有游戏对象及其层次结构。QHierarchy是一款...
Enhanced_Hierarchy_2.0_v2.4.5.unitypackage 最新版本哦 正版
Hierarchy PRO 2021 v2021.1u9
Unity是世界上最受欢迎的游戏开发引擎之一,它提供了丰富的工具和功能,让开发者能够创建高质量的2D和3D游戏。在Unity中,"层级编辑器"(Hierarchy)是至关重要的一个部分,它允许开发者组织和管理场景中的游戏对象...
通过阅读和理解《VS2010 MFC Hierarchy Chart》的三个部分(MFC_Hierarchy_Chart1of3.pdf、MFC_Hierarchy_Chart2of3.pdf、MFC_Hierarchy_Chart3of3.pdf),开发者可以深入理解MFC的内部结构,从而更好地利用MFC开发...
在前端开发领域,数据可视化是一项重要的技能,它能够将复杂的数据转化为直观的图形,帮助用户...同时,对于想要深入D3.js的学习者,这是一个很好的实践案例,可以从中学习如何从数据解析、布局计算到最终的图形渲染。
WPF Class Hierarchy
总结来说,HierarchyViewer是Android开发者必备的工具之一,它提供了对应用界面进行深入分析和优化的能力。熟练掌握并运用HierarchyViewer,不仅能够提升应用的性能,还能让用户体验更上一层楼。在实际开发中,我们...
2. **子系统(Subsystems)**:这些是构成顶层设计的独立模块,每个子系统可以包含其他子子系统,形成一个多级的层次结构。每个子系统可以代表一个特定的功能单元,如滤波器、放大器或者混频器。 3. **网络列表...