一周学C#第六天——枚举

 

一周学C#_6

枚举

1          类型

值类型

变量直接包含它们自己的数据

局部变量总是放在栈stack

引用类型

变量间接指向它们的数据

局部变量指向堆heap中的对象

枚举enum

值类型

结构struct

值类型

class

引用类型

接口interface

引用类型

数组[]array

引用类型

委托delegate

引用类型

C#规定,类如intdouble等内在类,属于结构,C#称之为“简单类型”。

简单类型与自定义类型的最大区别在于:简单类型有字面表达式;而自定义类型没有。

还有,第三种类型:指针。指针只能用在unsafe块(非安全代码)中。

2          枚举类型

枚举类型是一个用户声明的值类型

enum Suit

{

       Clubs, Diamonds, Hearts, Spades

}//Suit表示一副牌,有4中花色:梅花,方块,红心,黑桃

sealed class Example

{

       static void Main()

       {

              ...

              Suit lead=Spades;//这里错误

              ...

              Suit trumps=Suit.Clubs;//这样才正确

              ...

       }

}

枚举声明:

可以出现中类声明的相同地方

包括:名字、访问权限、内在的类型和枚举的成员。

其中的变量的作用范围是定义它的枚举

Suit trumps=Clubs;//这是错误的,必须将Clubs限定为Suit的一个成员,如下

Suit trumps=Suit.Clubs;

3          枚举的注意事项

枚举值缺省类型为int

可以选择任一一个内在的整数类型

但是不能是字符型

enum Suit:int//内在类型为int,可以省略

{

       Clubs,

       Diamonds,

       Heart=42,//成员默认取值为前一个成员值+1,但是也可以自己赋初始值

       Spades,//最后一个成员的分号是可选的

};//结尾分号也是可选的

枚举类型中的内在变量可以显式声明的类型包括:sbyte, byte, short, ushort, int, uint, long,ulong.

如果没有显式声明,默认的类型为int

成员的取值必须和枚举声明的内在类型相同。并且,必须在内在类型的范围之内。

如果没有给成员赋值,其取值为前一成员值+1,第一成员默认值为1

枚举成员的取值可以是相同值。

最后一个枚举成员可以用逗号结尾

枚举成员默认访问权限是public

4          使用枚举

枚举类型隐式的派生自System.Enum

namespace System

{

       public abstract class Enum

       {

              //静态函数

              public static string[] GetNames(Type);

              ...

              //实例函数

              public override string ToString();

              //构造函数

              protected Enum();

       }

}

 

Suit trumps=Suit.Clubs;

string[] names=System.Enum.GetNames(trumps.GetType());

...

Console.Write(names[0]);//Clubs

Console.Write(trumps);//Clubs

Console.Write(“{0}”,trumps);//Clubs

Console.Write(trumps.ToString());//Clubs

Console.Write((Suit)24);//24

 

System.EnumSystem命名空间的一个抽象类。它实现类一系列的接口:

              public abstract class Enum:IComparable,IFormattable,IConvertible

              {...}

枚举隐式派生于System.Enum

System.Enum只能被用来作为一个枚举类型的隐含基类。

不能显式的从System.Enum派生自己的类。

不能创建System.Enum类的实例。

5          枚举的操作符

枚举变量被当做整数变量来看待。

但在大部分情况下不能使用移位操作符。

6          枚举的转换

隐式转换

0可以转为任一enum类型

从不抛出错误

显式转换

enumenum通过内在类型转换

enum转为数值类型(包含char

从数值类型(包括char)转为enum

从不抛出错误

0可以被转为任一enum类型,不管此enum类型是否包括0

 

 

 

 

原文地址:https://www.cnblogs.com/lizunicon/p/1382508.html