目录
枚举
枚举是由程序员自定义的类型:
- 与结构一样,枚举是值类型, 因此直接存储它们的数据,而不是分开存储引用和数据。
- 枚举只有一种类型的成员: 命名的整数值常量。
枚举: 允许定义一个 枚举类型名,然后用枚举类型名声明的变量,其变量的值只能取自 括号内的这些标识符。
enum 枚举类型标识符 : 可取的基本类型
{
//枚举成员常量
}
注意:如果没有写可取的基本类型, 默认情况下该类型为int。 枚举的基本类型可以是: byte sbyte short ushort int uint long ulong. 枚举的类型是任何整数类型。
- 其中,每个枚举成员常量都被赋予一个底层类型的常量值。 该成员常量的值可以是可取的基本类型的该类型的任何值。
- 在默认情况下, 编译器把每一个成员赋值为0,并对每一个后续成员赋的值比前一个成员多1.
要显式地设置一个成员的名称,在枚举声明中的变量名之后使用初始化表达式。 尽管不可以有重复的名称,但是可以有重复的值。或者说 还可以使用一个值(枚举常量)作为另一个枚举(枚举常量)的基础值,为多个枚举指定相同的值(不过要注意的是: 这里可能产生预料不到的问题。).(C++中不可以这样):
namespace Ch05Ex03
{
enum Light:uint
{
value1=22,
value2,
value3 = value1,
value4,
value5=22
}
class Program
{
static void Main(string[] args)
{
Light myLight1 = Light.value1;
Light myLight2 = Light.value2;
Light myLight3 = Light.value3;
Light myLight4 = Light.value4;
Light myLight5 = Light.value5;
Light myLight6 = myLight5; // 还可以使用同类型的枚举变量复制值,myLight6 是 myLight5 的副本
WriteLine($"输出myLight1的值 {myLight1}——{(int)myLight1}");
WriteLine($"输出myLight2的值:{myLight2}——{(int)myLight2}");
WriteLine($"输出myLight3的值:{myLight3}——{(int)myLight3}");
WriteLine($"输出myLight4的值:{myLight4}——{(int)myLight4}");
WriteLine($"输出myLight5的值:{myLight5}——{(int)myLight5}");
WriteLine($"输出myLight6的值:{myLight6}——{(int)myLight6}");
ReadKey();
}
}
}
输出结果为:
输出myLight1的值 value5——22
输出myLight2的值:value4——23
输出myLight3的值:value5——22
输出myLight4的值:value4——23
输出myLight5的值:value5——22
输出myLight6的值:value5——22
注意: 以循环的方式赋值可能会产生错误。