首页 > 代码库 > C#-------------枚举
C#-------------枚举
声明一个枚举:
public enum Week
{
one = 1,
two = 2,
three
}
反编译
我们可以看到,我们创建的枚举自动继承自System.Enum,那么Enum又是怎么样的呢?
可以看到Enum是一个抽象类,它继承自ValueType但它又不是一个值类型,所以它有点特殊
那么枚举中到底可以有哪些类型呢?
通过查看源代码我们看到了一个ValuesAndNames这个类,所以说,只要是不大于ulong的整数都可以作为值
既然我们知道了怎么声明,接下来就是如何使用了以及转换
掌握了上面的基本也就掌握了枚举,当然如果你先判断一个值是否在枚举中,列举枚举的值该怎么办呢?
这时候我们就需要Enum类来帮助我们了
判断一个值是否在枚举中
static void Main(string[] args)
{
Console.WriteLine(Enum.IsDefined(typeof(Week),1));//true
Console.Read();
}
列举值:
foreach (var item in Enum.GetNames(typeof(Week)))
{
Console.WriteLine(item);
}
当然上面的枚举有时不够用怎么办,假如我有一个颜色的枚举,红,黄,白假如红和黄混合就是红黄色0-0,那么我们是否需要在建立一个枚举值呢?
答案可以是需要,也可以不需要,我们可以使用位枚举
[Flags] public enum Week { hong = 0x1, huang = 0x10 }
static void Main(string[] args) { Week w = Week.hong | Week.huang; Console.WriteLine(w.ToString()); Console.Read(); }
那如果要判断一个值是否在枚举中呢?
Week w = Week.hong | Week.huang;
Console.WriteLine((w&Week.hong)!=0);
C#-------------枚举
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。