1、枚举(enum)
enum
是一个特殊的类,代表一组常量(不可更改的变量,如,const
变量)。
要创建enum
,请使用enum
关键字(而不是类或接口),并用逗号分隔常量。请注意,它们应使用大写字母:
例如:
访问enum
中常量可以使用.
的方式访问:
enum Level {
LOW,
MEDIUM,
HIGH
}
如访问枚举类型Level
中LOW
则使用Level.LOW
2、类中定义枚举
还可以在类中包含一个enum
:
例如,
using System;
namespace cjavapy
{
public class EnumDemo
{
enum Level
{
LOW,
MEDIUM,
HIGH
}
public static void Main(string[] args)
{
Level myVar = Level.MEDIUM;
Console.WriteLine(myVar);
}
}
}
3、switch语句中的enum
枚举常用于switch
语句中,来判断相应的值:
例如,
using System;
namespace cjavapy
{
enum Level
{
LOW,
MEDIUM,
HIGH
}
public class EnumDemo
{
public static void Main(string[] args)
{
Level myVar = Level.MEDIUM;
switch (myVar)
{
case Level.LOW:
Console.WriteLine("Low level");
break;
case Level.MEDIUM:
Console.WriteLine("Medium level");
break;
case Level.HIGH:
Console.WriteLine("High level");
break;
}
}
}
}
4、循环遍历枚举类型
枚举类型具有Enum.GetValues()
方法,该方法返回所有枚举常量的数组。 当要遍历枚举的常量时,此方法很有用:
例如,
for(Level myVar : Enum.GetValues(typeof(Level))){
Console.WriteLine(myVar);
}
5、枚举与类之间的区别
枚举可以像class
一样具有属性和方法。唯一的区别是枚举常量是不可更改,不能用于创建对象,并且不能扩展其他类(但可以用扩展方法方式实现接口功能)。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication
{
public enum Color
{
Red,
Green,
Blue
}
public interface IColorCode
{
string GetColorCode();
}
public static class ColorExtensions
{
public static string GetColorCode(this Color color)
{
switch (color)
{
case Color.Red:
return "#FF0000";
case Color.Green:
return "#00FF00";
case Color.Blue:
return "#0000FF";
default:
throw new ArgumentOutOfRangeException(
nameof(color), color, null);
}
}
}
class Program
{
static void Main(string[] args)
{
Color c = Color.Green;
Console.WriteLine(c.GetColorCode());
Console.ReadKey();
}
}
}