1.  枚举

    a)    枚举类型是一种特殊的值类型,它用于声明一组具有相同性质的常量,

    b)    声明枚举

    在C#中使用关键字enum类声明枚举,其形式如下。

enum  枚举名

{

     List1=value1,

     List2=value2,

     List3=value3,

    ….

     ListN=valueN;

}

 

    其中,大括号{}的内容为枚举值列表,每个枚举值均对应一个枚举值名称,value1~valueN为整数数据类型,List1~ListN则为枚举值的标识名称。

如果枚举没有初始化, 即省掉"=整型常数"时, 则从第一个标识符开始, 顺次赋给标识符0, 1, 2, ...。但当枚举中的某个成员赋值后, 其后的成员按依次加1的规则确定其值。

  c)    枚举成员访问

    你可以在任何需要使用符号常量的位置使用枚举类型, 但是如果你想得到枚举类型所代表的整型值就得对其转型,语法:

          枚举名.成员名

          (int)枚举名.成员名

2.  结构

    结构是C#程序员用来定义自己的值类型的最普遍的机制。结构比枚举更强大,因为它提供函数、字段、构造函数、操作符和访问控制。结构类型也是先声明后使用。声明结构类型时要使用struct关键字

    A)  定义结构

          语法: struct  结构名 { //结构成员定义 }

          例子:struct MyCat

                {   

              public int age;

                    public string name;

                }

    B)  结构成员

          结构成员可分为两类,一是实例成员,一是静态成员。静态成员通过结构名来访问,而实例成员的访问是通过创建结构类型的变量来访问结构的实例成            员。结构的构造函数必须带参数

结构名  变量名;

3.  结构和枚举的区别:

  1)结构中的成员可以赋值;枚举是取值,只读的
  2)结构是跟类很相似的一种数据结构;而枚举是一个有限的整数序列
  3)结构是值类型,当显示的定义带参的构造函数时,默认的无参构造函数依然存在,结构不能继承,但可实现接口;
   而枚举也是值类型,它是一组已命名的数值常量,它有助于定义具有一组特定值的数据类型,主要总结为 :确定并有限,不会出现非安全值。
  4)定义结构的关键字是:static ;定义枚举的关键字是:enum 

4.类和结构的区别:

    1)    结构属于值类型,结构的值是直接存储在栈空间中的;

                     类属于引用类型,类的值是存储在托管堆中,在栈空间中保存指向该托管堆的内存地址。

    2)    结构当显示的定义带参的构造函数时,默认的无参构造函数依然存在;

           类当显示的定义带参的构造函数时,默认的无参构造函数就不存在了

    3)    结构不能继承,但可实现接口;类可以继承,也可以实现接口。

    4)    结构的关键字:static;类的关键字是class