一周学会C#(枚举一)

一周学会 C# (枚举一)

C# 才鸟( QQ:249178521 )

1. 类型

· ** 值类型 ** ** **

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

w ** 局部变量总是放在栈 ** ** (stack) ** ** 中 ** ** **

· ** 引用类型 ** ** **

w ** 变量间接指向它们的数据 ** ** **

w ** 局部变量指向堆 ** ** (heap) ** ** 中的对象 ** ** **

** 枚举( ** ** enum ** ** ) ** ** ** ** 值类型 ** ** **

** 结构( ** ** struct ** ** ) ** ** ** ** 值类型 ** ** **

** 类( ** ** class ** ** ) ** ** ** ** 引用类型 ** ** **

** 接口( ** ** interface ** ** ) ** ** ** ** 引用类型 ** ** **

** 数组( ** ** [ ]array ** ** ) ** ** ** ** 引用类型 ** ** **

** 委托( ** ** delegate ** ** ) ** ** ** ** 引用类型 ** ** **

你可能对上面的例子感到奇怪, c# 中的内在类如 int,double 怎么没有。 C# 规定这些内在类属于结构, C# 称之为简单类型。简单类型和用户自定义类型之间的最大区别是前者有字面表达式(如 42 ),而后者没有。

当然,还有第三种类型:指针。但指针只用在由 unsafe 关键字标识的非安全的代码中。

2. 枚举类型

· ** 它是一个用户声明的值类型 ** ** **

** enum Suit **

** { **

** Clubs, Diamonds, Hearts, Spades **

** } **

** //Suit ** ** 表示一副牌,它有 ** ** 4 ** ** 个花色:梅花 ** ** (Clubs) ** ** ,方块 ** ** (Diamonds) ** ** ,红心 ** ** (Hearts) ** ** , ** ** // ** ** 黑桃 ** ** (Spades) **

** sealed class Example **

** { **

** static void Main () **

** { **

** ... **

** Suit lead = Spades; // ** ** 错误 **

** ... **

** Suit trumps = Suit.Clubs; // ** ** 正确 **

** ... **

** } **

** } **

枚举的声明可以出现在类声明的相同地方。

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

枚举中声明的常量的范围是定义它们的枚举,换言之,下面的例子是错误的:

Suit trumps = Clubs;

Clubs 必须被限制为 Suit 的一个成员,就如下面:

Suit trumps = Suit.Clubs;

3. 枚举的注意点

· ** 枚举值缺省为 ** ** int **

w ** 你可以选择任一内在的整数类型 ** ** **

w ** 但不能是字符型 ** ** **

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

** { **

** Clubs, **

** Diamonds, **

** Hearts = 42, // ** ** 成员的取值缺省为前一个成员取值 ** ** +1 ** ** ,但可以自己赋初值 **

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

** };// ** ** 可以有结尾分号 **

枚举类可以显式的声明它的内在类型是 sbyte , byte , short , ushort , int , uint , long , ulong 。如果一个枚举类没有显式声明它的 内在类型,则缺省为 int 。

成员的取值必须和枚举声明的内在类型相同,并且必须在内在类型的范围之内(例如,你不能让成员的取值为负数,而枚举的内在类型是 uint )。

如果成员没有被赋值, 那么它的取值是前一个成员取值 +1 ,第一个成员的缺省值是 1 。枚举的成员的取值可以有相同的取值。

最后一个枚举成员可以使用一个结尾分号,这使得你将来可以很方便地加入更多的成员。

枚举成员的访问权限隐含为 public 。

Published At
Categories with Web编程
Tagged with
comments powered by Disqus