C#委托和事件
委托是一种数据类型,当我们需要将方法当做参数进行传递时,就可以使用委托而事件是对委托进行的一种封装的体现。事件是无法被外部所调用访问的,当我们仅需要在当前定义事件类中调用...
委托是一种数据类型,当我们需要将方法当做参数进行传递时,就可以使用委托
而事件是对委托进行的一种封装的体现。事件是无法被外部所调用访问的,当我们仅需要在当前定义事件
类中调用委托时,就可以选择事件
求大神指点,我这么理解是否正确?
如果不正确,那么何时使用委托、何时使用事件呢?
求指点 展开
而事件是对委托进行的一种封装的体现。事件是无法被外部所调用访问的,当我们仅需要在当前定义事件
类中调用委托时,就可以选择事件
求大神指点,我这么理解是否正确?
如果不正确,那么何时使用委托、何时使用事件呢?
求指点 展开
4个回答
展开全部
本人是这样去理解委托和事件的
1、你应该使用过string+=的操作,但如果是需要追加事件的话 +=是会报错的 ,所以事件需要放到一个“方法”(委托)里去执行追加操作,也就是类似于参数传入方法的概念 方法执行完后就返回参数 这里也是一样的
2、来个例子 TextBox1 他本身没有事件
现在你需要给个keyUp 那假如我们去给他绑定keyUp在属性面板里双击keyUp事件 就自动生成了 但是你发现TextBox1的keyUp触发时 你想还触发一个自定义事件 keyUp1(其实这个地方可以是一个方法直接绑定到keyUp事件就行了,但是假如这个事件的方法是你移植过来的 那委托就上场了 给你把keyUp+=keyUp1 这样委托就帮你完成了文本框keyUp时调用两个事件的功能) 大概就是这样了
1、你应该使用过string+=的操作,但如果是需要追加事件的话 +=是会报错的 ,所以事件需要放到一个“方法”(委托)里去执行追加操作,也就是类似于参数传入方法的概念 方法执行完后就返回参数 这里也是一样的
2、来个例子 TextBox1 他本身没有事件
现在你需要给个keyUp 那假如我们去给他绑定keyUp在属性面板里双击keyUp事件 就自动生成了 但是你发现TextBox1的keyUp触发时 你想还触发一个自定义事件 keyUp1(其实这个地方可以是一个方法直接绑定到keyUp事件就行了,但是假如这个事件的方法是你移植过来的 那委托就上场了 给你把keyUp+=keyUp1 这样委托就帮你完成了文本框keyUp时调用两个事件的功能) 大概就是这样了
展开全部
委托是事件的超集,事件是委托的一种特殊情况.就像类和接口一样.
不必纠结在什么时候用事件什么时候用委托.能用事件就用事件,不能用或不好用就自已建个委托.
不必纠结在什么时候用事件什么时候用委托.能用事件就用事件,不能用或不好用就自已建个委托.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
//定义一个委托
public delegate void 委托名(); //注意此时委托示包含在任何类里.
public class Class1
{
//在本类中定义一个事件基于 "委托名" 的事件
event 委托名 事件名;
//构造函数
public Class1()
{
事件名 += 事件调用的方法;
}
/// <summary>
/// 事件所绑定的方法
/// </summary>
void 事件调用的方法()
{
Console.WriteLine("我是事件调用的方法");
}
//调用
void 调用()
{
事件名();
}
}
public delegate void 委托名(); //注意此时委托示包含在任何类里.
public class Class1
{
//在本类中定义一个事件基于 "委托名" 的事件
event 委托名 事件名;
//构造函数
public Class1()
{
事件名 += 事件调用的方法;
}
/// <summary>
/// 事件所绑定的方法
/// </summary>
void 事件调用的方法()
{
Console.WriteLine("我是事件调用的方法");
}
//调用
void 调用()
{
事件名();
}
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一个委托不一定是一个事件,
但是一个事件肯定需要一个委托性质的东西来handle。
一个类的委托可以自己实现,
一个类的事件让使用这个类的类来实现。
但是一个事件肯定需要一个委托性质的东西来handle。
一个类的委托可以自己实现,
一个类的事件让使用这个类的类来实现。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询