黑马程序员_C#中枚举的简介
2013-03-17 22:49
323 查看
------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------
首先我们来了解一下枚举到底是什么?
下面我来定义一种枚举类型,并且在定义这种类型时我们要指定这个类型的所有值。
enum 自己起的枚举名称{
值1,值2,值3,值4........
}
例如:定义一个性别的枚举
enum Gender{
男,女
}
枚举一般和类定义在同一级别,这样在统一命名空间在的所有类就可以都使用这个枚举(当然也可以定义在类中甚至方法中)。
枚举的作用主要是用来限制用户不要随便赋值,只能选择定义枚举时列举的值。这样也方便程序员,不要死记住每一个值,只要
通过枚举名点出我们需要的枚举值。所有的枚举类型(enum type)都是值类型。
定义枚举时我们还有注意一下几点:
①我们定义的枚举变量时,枚举值不能使int类型。
②枚举类型的变量都可以强制转换成一个int类型的变量。
③枚举的值在定义时是有一个默认编号的,编号从0开始。
在我们以后的工作中或许会遇到需要将字符串转换成枚举类型,那么我们如何来实现字符串与枚举类型之间的转换呢?
下面我们来写一个通用的转换公式:
(自己写的枚举名称)(Enum.Parse(typeof(自己写的枚举名称),"待转换字符串"))
和字符串比起来,用枚举的好处就是限制了变量的取值范围。使得程序处理起来更方便。
system.enum是一个抽象类(abstract class),所有枚举类型都直接继承自它,当然也同时继承了它的所有成员。
所有的值类型都是system.valuetype的后代,枚举类型也不例外,枚举类型直接继承自system.enum,而system.enum却又直接继承自system.valuetype的,所以,枚举类型也是 system.valuetype的后代。
值类型都是system.valuetype的后代,但system.valuetype的后代不全是值类型,system.enum就是唯一的特例!
在system.valuetype的所有后代中,除了system.enum之外其它都是值类型。
事实上,我们可以在.net的源代码中找到system.enum的声明:
public abstract class enum : valuetype, icomparable, iformattable, iconvertible
1. 所有枚举类型(enum type)都是值类型。
2. system.enum和system.valuetype本身是引用类型。
3. 枚举类型(enum type)都是隐式的直接继承自system.enum,并且这种继承关系只能由编译器自动展开。但system.enum本身不是枚举类型(enum type)。
4. system.enum是一个特例,它直接继承自system.valuetype,但本身却是一个引用类型。
5. 枚举类型可以被装箱成system.enum、system.valuetype、system.object或者system.iconvertible、system.iformattable、system.icomparable。
注意:在.net 1.1上,枚举类型只能被装箱到system.enum、system.valuetype、system.object;而在.net 2.0上,枚举类型还能被装箱到system.enum所实现的三个接口:system.iconvertible、 system.icomparable、system.iformattable。对应的装箱操作既可以为隐式的也可以是显式的
------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------
首先我们来了解一下枚举到底是什么?
下面我来定义一种枚举类型,并且在定义这种类型时我们要指定这个类型的所有值。
enum 自己起的枚举名称{
值1,值2,值3,值4........
}
例如:定义一个性别的枚举
enum Gender{
男,女
}
枚举一般和类定义在同一级别,这样在统一命名空间在的所有类就可以都使用这个枚举(当然也可以定义在类中甚至方法中)。
枚举的作用主要是用来限制用户不要随便赋值,只能选择定义枚举时列举的值。这样也方便程序员,不要死记住每一个值,只要
通过枚举名点出我们需要的枚举值。所有的枚举类型(enum type)都是值类型。
定义枚举时我们还有注意一下几点:
①我们定义的枚举变量时,枚举值不能使int类型。
②枚举类型的变量都可以强制转换成一个int类型的变量。
③枚举的值在定义时是有一个默认编号的,编号从0开始。
在我们以后的工作中或许会遇到需要将字符串转换成枚举类型,那么我们如何来实现字符串与枚举类型之间的转换呢?
下面我们来写一个通用的转换公式:
(自己写的枚举名称)(Enum.Parse(typeof(自己写的枚举名称),"待转换字符串"))
和字符串比起来,用枚举的好处就是限制了变量的取值范围。使得程序处理起来更方便。
下面是我在网上自己搜的一些关于枚举的资料:
c# 枚举类型都是值类型。system.enum是一个抽象类(abstract class),所有枚举类型都直接继承自它,当然也同时继承了它的所有成员。
所有的值类型都是system.valuetype的后代,枚举类型也不例外,枚举类型直接继承自system.enum,而system.enum却又直接继承自system.valuetype的,所以,枚举类型也是 system.valuetype的后代。
值类型都是system.valuetype的后代,但system.valuetype的后代不全是值类型,system.enum就是唯一的特例!
在system.valuetype的所有后代中,除了system.enum之外其它都是值类型。
事实上,我们可以在.net的源代码中找到system.enum的声明:
public abstract class enum : valuetype, icomparable, iformattable, iconvertible
1. 所有枚举类型(enum type)都是值类型。
2. system.enum和system.valuetype本身是引用类型。
3. 枚举类型(enum type)都是隐式的直接继承自system.enum,并且这种继承关系只能由编译器自动展开。但system.enum本身不是枚举类型(enum type)。
4. system.enum是一个特例,它直接继承自system.valuetype,但本身却是一个引用类型。
5. 枚举类型可以被装箱成system.enum、system.valuetype、system.object或者system.iconvertible、system.iformattable、system.icomparable。
注意:在.net 1.1上,枚举类型只能被装箱到system.enum、system.valuetype、system.object;而在.net 2.0上,枚举类型还能被装箱到system.enum所实现的三个接口:system.iconvertible、 system.icomparable、system.iformattable。对应的装箱操作既可以为隐式的也可以是显式的
------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------
相关文章推荐
- 黑马程序员 自学09C#编程基础之break continue 枚举
- 黑马程序员——C#枚举 结构体 this关键字 base关键字 值类型 引用类型 装箱和拆箱
- 黑马程序员-我的摘录- 浅谈C#中的枚举
- 【黑马程序员】C#之常量枚举
- 黑马程序员 C#序列化和反序列化简介
- c#中的数据类型简介(枚举)
- 黑马程序员——C#基础简介(常见语句)
- 黑马程序员之C#学习笔记:枚举以及将字符串转换为枚举学习心得
- 【黑马程序员】2.C#基础之常量 枚举 结构
- c#枚举简介
- 黑马程序员 -枚举
- C#枚举高级应用
- 黑马程序员_java高新技术(1)枚举、反射、内省
- C#:USB设备枚举(二)设备枚举API
- c#中的结构与枚举
- C# delegate简介
- C# 枚举
- 黑马程序员-枚举与反射
- c# 枚举返回字符串操作
- 黑马程序员 java高级技术1.5之枚举(张孝祥)