This article is currently in the process of being translated into Chinese (~90% done).
Advanced topics:
Enumerations
枚举是一个特殊的名称集合,这些名称全都一一映射到一个数字集合,通常为整数。当想从一组常量值中进行选择,而这组常量又一一对应某个数字时,枚举类型就很方便,而且此类应用场景也很广泛。就象本文的示例将会展示的那样,枚举类型是基于类定义的,存在于名空间。表示可以在所有类中引用同一名空间内的枚举类型。
这是一个简单的枚举示例,可以展示出什么是枚举。
public enum Days { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }所有可用的值都对应到一个数字。如果没有特别指定,第一个值为0,第二个为1,以此类推。下列代码片段可以证明这一点,同时展示怎样使用enum类型可用的值:
using System;
namespace ConsoleApplication1
{
public enum Days { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }
class Program
{
static void Main(string[] args)
{
Days day = Days.Monday;
Console.WriteLine((int)day);
Console.ReadLine();
}
}
}以上代码会输出0,因为Monday值直接映射到数字0。显然这是可以改变的 - 把上述代码作类似这样的修改:
public enum Days { Monday = 1, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }重新运行代码,就会看到Monday值变成了1,而不是0。结果是所有的其它值也会增加1。也可以对其它值赋其它数字。因为值与数字是直接映射的,所以可以用数字获得相应的枚举值,象这样:
Days day = (Days)5;
Console.WriteLine(day);
Console.ReadLine();枚举类型另一个有用的功能是把字符串与值关联。把上述代码作类似这样的修改:
static void Main(string[] args)
{
string[] values = Enum.GetNames(typeof(Days));
foreach(string s in values)
Console.WriteLine(s);
Console.ReadLine();
}Enum类包含一批有用方法可用于操作枚举类型。
This article has been fully translated into the following languages:
Is your preferred language not on the list? Click here to help us translate this article into your language!