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

 我来答
sniper2003
2012-08-03 · TA获得超过1882个赞
知道小有建树答主
回答量:775
采纳率:100%
帮助的人:661万
展开全部
枚举相对来说还是比较好理解的。这就好像你的一只手一样,你的手掌就好比枚举的声明,而你的每一个手指和你的手掌组成了你整个手。就好像这样的声明:
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(观察者模式),你可以去网上找找相关的代码学习一下,在这里我就不例举了。
追问
越来越糊涂了,不过还是很谢谢你,鄙人理解能力很差,哎。。。。。。。
笨笨小香猪
2012-08-03 · TA获得超过129个赞
知道小有建树答主
回答量:268
采纳率:0%
帮助的人:149万
展开全部
不是见死不救,委托不是一句能说清楚,他是一个方法传递委托变量,可以把
方法直接赋值给委托变量,委托在c#中方法参数必须和委托的参数相同。不相同编译不过。如一个委托 public deletage int update(int i);方法一定要 int xxx(int i),还有一种,是泛型委托如pulic deletege T update<T,T1>(T1 t1).定义变量时候,update<int ,string> update这个方法是int xxx(string s);

delegate T Update<T,T1>(T1 i);
static void Main(string[] args)
{
//Update<int> update = delete;
//Console.Write(update(4));
Update<int,int> update = delete;
Console.Write(update(5));
Console.ReadKey();
}
static int delete(int i)
{
return i;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
星子校0r
2012-08-03 · 超过46用户采纳过TA的回答
知道小有建树答主
回答量:264
采纳率:0%
帮助的人:144万
展开全部
网上例子一大堆,而且都很好,为什么不去找呢?
更多追问追答
追问
看过一些,不明白啊。脑子理解能力不好
追答
!!!!我开始也是光看来着,看不明白,但是你自己仿照着做例子呢,做他几个,自己调试看怎么个过程。这样才能理解,要不永远看不懂的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiaozhao522
2012-08-03 · 超过71用户采纳过TA的回答
知道小有建树答主
回答量:419
采纳率:100%
帮助的人:163万
展开全部
你先试着看一下资料
!如果三天后还是不懂!再问 我来帮你解答
更多追问追答
追问
看过了,哎。。。。。。。很难理解
追答
你再继续看两遍!实在不行了,我帮你
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式