第三部分 基本类型:第15章 枚举类型和位标志

15.1 枚举类型
枚举类型定义了一组“符号名称/值”配对。
例如,以下Color类型定义了一组符合,每个符号表示一种颜色。

internal enum Color{
    White, //赋值0
    Red,   //赋值1
    Green, //赋值2
    Blue,  //赋值3
    Orange //赋值4
}

枚举类型的好处:
枚举类型容易编写、阅读和维护。
枚举类型是强类型。

派生关系:
System.Object -> System.ValueType -> System.Enum -> 枚举类型

枚举类型是值类型,但和正常值类型的区别:
枚举类型不能定义任何方法、属性或事件。(可利用“扩展方法”模拟想枚举类型添加方法)
编译枚举类型时,C#编译器会把每个符号转换成类型的一个常量字段。
例如,编译器会把前面Color枚举类型看成是以下代码:

internal struct Color: System.Enum{
    //以下是一些公共常量,它们定义了Color的符号和值
    public const Color White = (Color) 0;
    public const Color Red = (Color) 1;
    public const Color Green = (Color) 2;
    public const Color Blue = (Color) 3;
    public const Color Orange = (Color) 4;

    //以下是一个公共实例字段,它包含一个Color变量的值,
    //不能写嗲吗来直接引用这个实例字段
    public Int32 value__;
}

第三部分 基本类型:第15章 枚举类型和位标志,布布扣,bubuko.com

时间: 2024-10-24 19:15:23

第三部分 基本类型:第15章 枚举类型和位标志的相关文章

第15章 枚举类型和位标志

Enumeration提供了一些非常炫酷的功能,相信大多数开发人员都不熟悉.这些新功能极大的简化了应用程序开发. 15.1枚举类型 枚举类型(enumerated types)定义了一组“符号名称/值”配对. 以下Color类型定义了一组符号,每个符号都标识一种颜色: internal enum Color { White,//赋值0 Red,  //赋值1 Greed,//赋值2 Blue, //赋值3 Orange//赋值4 } 当然,也可以写个程序用0代表白色,1代表红色,以此类推.但不应

第15章 枚举类型和位标志 15.1-15.3

Enumeration提供了一些非常炫酷的功能,相信大多数开发人员都不熟悉.而这些新功能极大的简化了应用程序的开发. 15.1枚举类型 枚举类型(enumerated types)定义了一组“符号名称/值”配对. 以下Color类型定义了一组符号,每个符号都标识一种颜色: internal enum Color { White,//赋值0 Red, //赋值1 Greed,//赋值2 Blue, //赋值3 Orange//赋值4 } 当然,我们也可以写个程序用0代表白色,1代表红色,以此类推.

第17章 枚举类型与泛型

1.枚举类型 JDK1.5中新增了枚举类型与泛型. 枚举类型可以取代以往常量的定义方式,即将常量封装在类或接口中,此外,它还提供了安全检查功能. 枚举类型本质上还是以类的形式存在. enum是定义枚举类型的关键字. 例如:在项目中创建Constants接口,在接口中定义敞亮的常规方式: public interface Constants{ public static final int Constants_A=1; public static final int Constants_B=12;

第十五章 枚举类型和位标志

1. 概述 本章内容包括 枚举类型.位标志 以及 为枚举类型添加方法. 2. 主要内容 2.1 枚举类型 枚举类型定义了一组“符号名称/值”配对. 枚举类型的好处包括: ① 可以使程序更容易编写.阅读和维护. ② 枚举类型是强类型的,有编译器检测. 编译枚举类型时,C#编译器会把每个符号转换成类型的一个常量字段. System.Enum类型有一个名为GetUnderlyingType的静态方法,返回用于容纳一个枚举类型的值的基础类型. Enum.GetUnderlyingType(typeof(

第6课 类型别名和强枚举类型

一. typedef和using关键字 (一)两者的差异 ①C++11引入using关键字,覆盖了typedef的全部功能.它既可以用来定义类型的别名,也可以定义模板的别名.而typedef可以定义类型的别名,但不能用来重定义模板的别名. ②使用using不用写“::type”的后缀.在模板内,对于内嵌typedef的引用经常要加上typename前缀. ③using采用类似于赋值的方式,从语法比typedef更加清晰. (二)using在模板中的优势 ①using可以直接为模板取别名(alia

006.值类型、引用类型、枚举类型、字符串、冒泡排序

1.二维数组和交错数组 2.参数数组:params 数据类型[]数组名只能有一个参数数组,必须是最后一个参数必须是一堆数组 同时存在其他的重载方法,方法调用时优先调用参数最匹配的,没有直接匹配的参数列表时,才调用带有参数列表的方法 3.类型:值类型:整型 float double decimal bool char 枚举 结构引用类型:string 数组(Array)类 接口 委托 4.枚举访问修饰符 enum 枚举{值1,值2}枚举定义的位置:命名空间和类都可以转换:(枚举类型)Enum.Pa

15、枚举类型和标志位

G常规 D十进制 X十六进制myControl.Style =?Styles.ShowBorder |?Styles.ShowCaption;??这时myControl.Style枚举的值将变成 1+2=3,它的ToString()将变成"Styles.ShowBorder , Styles.ShowCaption"?这里我们可以解释为什么第三个值ShowToolbox可以为4,5..而不能为3.也就是说它的值不应该是前几项值的复合值.有一个比较简单的方法就是用2的n次方来依次为每一项

如何定义一个基础类型为Byte的枚举类型。

1 internal enum Color : byte 2 { 3 White, 4 Red, 5 Green 6 }

CLR via C#深解笔记三 - 基元类型、引用类型和值类型 | 类型和成员基础 | 常量和字段

编程语言的基元类型 某些数据类型如此常用,以至于许多编译器允许代码以简化的语法来操纵它们. System.Int32 a = new System.Int32();  // a = 0 a = 1; 等价于: int a = 1; 这种语法不仅增强了代码的可读性,其生成的IL代码与使用System.Int32时生成的IL代码是完全一致的. 编译器直接支持的数据类型称为基元类型(primitive type).基元类型直接映射到Framework类库(FCL)中存在的类型.如C#中,int直接映射