C# 枚举基础篇(转载)
2009-12-09 12:06
351 查看
Q:在C#里,我们如何表达枚举类型?
A:你可以使用enum关键字(keyword)来声明一个枚举类型(enum type):
//Code #1
public enum Alignment
{
Left,
Center,
Right
}
Q:C#枚举类型是值类型(value type)还是引用类型(reference type)?
A:枚举类型都是值类型。
Q:System.Enum是枚举类型么?
A:不是。
Q:System.Enum与枚举类型(enum type)有什么关系?
A:System.Enum是一个抽象类(abstract class),所有枚举类型都直接继承自它,当然也同时继承了它的所有成员。
Q:那么System.Enum属于引用类型啦?
A:是的。
Q:既然System.Enum是引用类型,而枚举类型又是直接继承自System.Enum的,那为什么枚举类型却不是引用类型?
A:这种继承关系是隐式的并由编译器负责展开,上面Code #1的Alignment枚举被展开后的IL代码如下:
Code #08
// Code #08
.method private hidebysig static void Main(string[] args) cil managed
{
.entrypoint
// Code Size: 15 byte(s)
.maxstack 1
.locals (
EnumerationFaq.Alignment alignment1)
L_0000: ldc.i4.1
L_0001: stloc.0
L_0002: ldloc.0
L_0003: box EnumerationFaq.Alignment
// 调用static void Print(Enum e);
L_0008: call void EnumerationFaq.Program::Print([mscorlib]System.Enum)
L_000d: nop
L_000e: ret
}
A:你可以使用enum关键字(keyword)来声明一个枚举类型(enum type):
//Code #1
public enum Alignment
{
Left,
Center,
Right
}
Q:C#枚举类型是值类型(value type)还是引用类型(reference type)?
A:枚举类型都是值类型。
Q:System.Enum是枚举类型么?
A:不是。
Q:System.Enum与枚举类型(enum type)有什么关系?
A:System.Enum是一个抽象类(abstract class),所有枚举类型都直接继承自它,当然也同时继承了它的所有成员。
Q:那么System.Enum属于引用类型啦?
A:是的。
Q:既然System.Enum是引用类型,而枚举类型又是直接继承自System.Enum的,那为什么枚举类型却不是引用类型?
A:这种继承关系是隐式的并由编译器负责展开,上面Code #1的Alignment枚举被展开后的IL代码如下:
Code #08
// Code #08
.method private hidebysig static void Main(string[] args) cil managed
{
.entrypoint
// Code Size: 15 byte(s)
.maxstack 1
.locals (
EnumerationFaq.Alignment alignment1)
L_0000: ldc.i4.1
L_0001: stloc.0
L_0002: ldloc.0
L_0003: box EnumerationFaq.Alignment
// 调用static void Print(Enum e);
L_0008: call void EnumerationFaq.Program::Print([mscorlib]System.Enum)
L_000d: nop
L_000e: ret
}
相关文章推荐
- 黑马程序员 自学09C#编程基础之break continue 枚举
- C# 枚举赋值篇(转载)
- C#基础-技术还债2-枚举
- 【转载】[C#]枚举操作(从枚举中获取Description,根据Description获取枚举,将枚举转换为ArrayList)工具类
- [转载]C#基础-Func,Action
- 【小松教你手游开发】【面试必读(编程基础)】 转载一篇优秀的c#泛型理解
- C#基础 结构、枚举、表达式、运算符
- C#基础概念二十五问(转载)
- 枚举的基础知识(转载)
- C#基础学习笔记--数据类型,值类型,结构类型,枚举类型
- C#基础枚举的设计
- C#面试题(转载) SQL Server 数据库基础笔记分享(下) SQL Server 数据库基础笔记分享(上) Asp.Net MVC4中的全局过滤器 C#语法——泛型的多种应用
- 13、C#基础整理(枚举)
- C#基础(五)--枚举的含义及其应用
- <转载>在C#中操作XML(基础操作)
- c# 枚举基础 与 枚举属性的访问
- C#基础概念(转载)
- <转载>C# 类型基础
- c#基础笔记(1) 枚举
- C,C++,C#基础一:类,结构,枚举