实际上本章就只讲枚举类型,因为位标志本来就可以当做一个特殊的枚举类型. 关于枚举类型 枚举类型是一种消灭魔法数字的好方法,使程序更容易编写,阅读和维护. 枚举类型是值类型,然而有别于其它值类型,枚举类型不能定义任何方法.除非用扩展方法. 然而正如我之前说到的,也许当你想用扩展方法的时候可以先考虑一下这个地方是否还适合用枚举类型,又或者这个方法是否适合加在这个枚举类型中. 在编译枚举类型时,C#编译器已经将每个符号转换成了类型的一个常量字段. C#默认容纳一个枚举类型的值的基础类型为int,而实际…
一.枚举类型 枚举类型(enumerated types)定义了一组"符号名称/值"配对. 例如,以下Color类型定义了一组符号,每个符号都标识一种颜色: internal enum Color { While, //赋值0 Red, //赋值1 Green, //赋值2 Blue, //赋值3 Orange //赋值4 } 使用枚举类型的好处: 1)枚举类型使程序更容易编写.阅读和维护.有了枚举类型,符号名称可在代码中随便使用,开发人员不需要记 住每个硬编码的含义.而且,一旦与符号…
枚举类型 枚举类型(enumerated types)定义了一组"符号名称/值"配对.例如,以下Color类型定义了一组符号,每个符号都标识一种颜色: internal enum Color { While, //赋值0 Red, //赋值1 Green, //赋值2 Blue, //赋值3 Orange //赋值4 } 使用枚举类型的好处: 1)枚举类型使程序更容易编写.阅读和维护.有了枚举类型,符号名称可在代码中随便使用,开发人员不需要记住每个硬编码的含义.而且,一旦与符号名称对应…
15.1 枚举类型 枚举定义的符号是常量值. C#编译器编译时,会用数值替换符号,不再引用定义了符号的枚举类型.可能会出现一些版本问题. Enum.IsDefined(Type enumType, object value)方法被经常用于参数校验: public void SetColor(ConsoleColor c) { if (!Enum.IsDefined(typeof(ConsoleColor), c)) { throw new ArgumentOutOfRangeException(…
1.基础 枚举类型(enumerated types)定义了一组“符号名称/值”配对. 枚举类型是值类型,每个枚举类型都是从System.Enum派生的,而System.Enum又是从System.ValueType派生,而其后又是从System.Object派生而来 枚举类型没有方法属性和事件,但是可以通过扩展方法进行模拟向枚举类型添加方法. 2.例子与IL分析    对于以下的一个枚举类型,通过IL可以知道其内部的结构如下图(1-1)所示: public enum Color{ White,…
  枚举类型定义了一个枚举值的列表,每个值是一个标识符.例如,下面的语句声明了一个枚举类型,用来表示星期的可能情况: public enum Day { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }   实际上,这个声明定义的类型是一个类,它有7个实例.因此,在比较两个枚举类型的值时,永远不需要调用equals,直接使用"=="就可以了.   枚举类型的值类似于一个常量,因此,按照惯例拼写都使用大写字母…
这些东西是基础中的基础,基本上是本书都会讲这个.但是很多东西到处都有,所以只捡了以下的这些写下来. 关于类型的可见性和可访问性 也就是public,internal这种东西,但是还是有个东西要提一下,那就是友元程序集. 利用System.Runtime.CompilerServices中的InternalsVisibleTo这个特性,使得从友元程序集访问指定程序集的internal类型.(它的作用是通过给定公钥和友元程序集名称来访问internal方法与属性,其实就是为了让别的公司的人访问不了,…
关于System.Object 所有类型都从System.Object派生而来. System.Object的公共方法中ToString()一般是返回对象的类型的全名,只有Int32这些类型将其重写后,新方法才会返回其值的字符串表示. 其中还有两个受保护的方法: MemberwiseClone:深复制. Finalize:在垃圾回收器判断此对象应该被回收后,在对象的内存被实际回收前会调用此方法. 关于类型判断和转换: 用is来判断对象为某类型或者某类型的派生类,是为true,不是为false.…
PluginSDK中的枚举型主要有以下这些: public enum AltitudeMode//高度模式枚举 { ClampedToGround,//强制到地面模式 RelativeToGround, //相对到地面模式 Absolute//绝对高度模式 } public enum Units//单位枚举 { English,//英制单位 Metric//度量单位 } //决定可渲染对象被渲染的优先次序,具有高优先级的对象较低优先级对象先渲染 public enum RenderPriorit…
public class EnumerationDataProvider : ObjectDataProvider { public Type EnumerationType { get; set; } public string NoneValue { get; set; } public string NoneDisplayValue { get; set; } public EnumerationDataProvider() { this.MethodName = "GetEnumerat…