不理解C#的枚举,委托和事件.请求高手给个通俗易懂的例子。就是有代码和对代码的详细解释。十分谢谢

枚举相对来说还是比较好理解的。这就好像你的一只手一样,你的手掌就好比枚举的声明,而你的每一个手指和你的手掌组成了你整个手。就好像这样的声明:
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(观察者模式),你可以去网上找找相关的代码学习一下,在这里我就不例举了。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值