枚举相对来说还是比较好理解的。这就好像你的一只手一样,你的手掌就好比枚举的声明,而你的每一个手指和你的手掌组成了你整个手。就好像这样的声明: public enum Hand{ 食指, 大拇指, 中指, ... } (虽然写中文是可以的,但是尽量不要使用) 假如你现在要用手指在纸上写一些东西,你就要选择哪个手指,或者直接来一个掌印,就可以这样: MyMind.UserHand(Hand.手掌) 当然,方法内部实现时,就要分别的判断枚举的每一个值,来确定要写成什么样;是一个手指头的印子,还是一个掌印; ------------------------------- 而针对委托和事件,我认为它是作为.net中的一个精髓所在的,当然初学者不建议了解太深,即不要想用委托和事件做太多事情,这样会弄晕你的;只需要适当了解语法的基础和大概的用法就好了。 委托和事件在.net中最经典的应用,就是winform中事件驱动模型(当然asp.net中也有,但是毕竟没有winform来的那么直接)。 我们说用户的任何一个操作都是一个事件,事件本身并不做任何业务操作,而带来的是根据这个事件而触发的执行过程,这就是委托。 举个例子: 老师分发考试的试卷,然后进行考试。应该如何分析这个过程? 按照事件驱动模型进行分析:考试就算作是一个事件,而老师分发试卷则也算作是一个事件的触发。分发完试卷之后,所有的学生要进行考试,则是一个执行的过程;那么从代码角度上,我们应该这样设计; //学生 public class Student { } //考题 public class ItemExam { } public delegate void ExcutingDelegate(object sender, Student stu, ItemExam items); public class Teacher { public event ExcutingDelegate Examing; private List<Student> StuList = new List<Student>(); //分发试卷 public void Prepare(List<Student> lst) { this.StuList = lst; //为每一个学生分发试卷,为准备考试; this.Examing += delegate(object sender, Student stu, ItemExam items) { //考试的过程 }; } //开始考试 public void DoExam() { foreach (var student in StuList) { this.Examing(this, student, new ItemExam()); } } } 在winform平台中,还有一个比较经典的设计模式用就是Observer(观察者模式),你可以去网上找找相关的代码学习一下,在这里我就不例举了。