c# 委托和事件实例学习

时间:2023-07-04 06:25:58 

Common.cs:


using System;
using System.Collections.Generic;
using System.Text;
namespace DelegateAndEvent.App_Code
{
public class Common
{
//定义全局变量.
public static string txt = "";
#region 定义方法
public string HelloCSharp(string name)
{
txt += "hello " + name;//这样做是为了看到委托可以执行多个方法.
return "hello " + name;
}
public string HiCSharp(string name)
{
txt += "hi " + name;
return "hi " + name;
}
#endregion
#region 定义委托
//定义委托和定义方法类似,区别是加个delegate.去掉方法体,只写方法签名.
public delegate string SayHi(string name);
//委托可以像普通变量一样使用.区别在于可以把多个方法赋给委托.
public SayHi dlgt1, dlgt2;
//使用委托
public void useDelegate(string name, SayHi sayHi)
{
sayHi(name);
}
#endregion
#region 事件
//声明事件
public event SayHi hiEvent;
//触发事件
public void causeEvent()
{
hiEvent += HelloCSharp;
hiEvent += HiCSharp;
if (hiEvent != null)
{
hiEvent("crane");
}
}
#endregion
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace DelegateAndEvent.App_Code
{
public class Common
{
//定义全局变量.
public static string txt = "";
#region 定义方法
public string HelloCSharp(string name)
{
txt += "hello " + name;//这样做是为了看到委托可以执行多个方法.
return "hello " + name;
}
public string HiCSharp(string name)
{
txt += "hi " + name;
return "hi " + name;
}
#endregion
#region 定义委托
//定义委托和定义方法类似,区别是加个delegate.去掉方法体,只写方法签名.
public delegate string SayHi(string name);
//委托可以像普通变量一样使用.区别在于可以把多个方法赋给委托.
public SayHi dlgt1, dlgt2;
//使用委托
public void useDelegate(string name, SayHi sayHi)
{
sayHi(name);
}
#endregion
#region 事件
//声明事件
public event SayHi hiEvent;
//触发事件
public void causeEvent()
{
hiEvent += HelloCSharp;
hiEvent += HiCSharp;
if (hiEvent != null)
{
hiEvent("crane");
}
}
#endregion
}
}


MainFrm.cs:


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DelegateAndEvent.App_Code;
namespace DelegateAndEvent
{
public partial class MainFrm : Form
{
Common common = new Common();
public MainFrm()
{
InitializeComponent();
}
private void btnOk_Click(object sender, EventArgs e)
{
//this.lblShow.Text += common.HelloCSharp("tree");
//测试委托
common.dlgt1 = common.HelloCSharp;//只写方法签名,不加()
common.dlgt1 += common.HiCSharp;//虽然两个方法都调用了,但是返回值只返回最后一次调用的值.
//this.lblShow.Text += common.dlgt1("tree");//使用委托就像使用方法一样.
//this.lblShow.Text = Common.txt;
//用委托做参数
//common.useDelegate("tree", common.dlgt1);
//this.lblShow.Text = Common.txt;
//事件
/*这里的问题是不能用common.hiEvent();这样引用.
原因是需要在这个类里定义一个事件变量.
*/
common.causeEvent();
this.lblShow.Text = Common.txt;
}
}
}
标签:c#,委托,事件
0
投稿

猜你喜欢

  • jdk1.8中的for循环问题记录

    2023-10-16 04:08:34
  • 浅谈Java锁的膨胀过程以及一致性哈希对锁膨胀的影响

    2023-06-03 15:03:38
  • Android仿QQ列表滑动删除操作

    2023-10-10 18:31:59
  • java实现分页显示效果

    2021-12-29 20:17:43
  • JavaWeb实现文件上传下载功能实例详解

    2023-05-08 19:43:51
  • Android实现简单时钟View的方法

    2022-10-21 18:36:00
  • C#中关于double.ToString()的用法

    2021-12-06 13:12:22
  • Spring实现内置监听器

    2021-07-06 01:29:06
  • Java实例讲解注解的应用

    2021-11-02 01:43:14
  • Java分布式学习之Kafka消息队列

    2022-04-10 22:22:47
  • java的三种随机数生成方式

    2022-03-06 13:43:57
  • c#使用Socket发送HTTP/HTTPS请求的实现代码

    2023-10-12 07:10:00
  • JAVA中 Spring定时器的两种实现方式

    2022-10-11 02:33:45
  • 基于OpenGL实现多段Bezier曲线拼接

    2022-03-07 03:47:31
  • C#中Convert.ToString和ToString的区别分析

    2023-02-04 22:18:06
  • Java WebService开源框架CXF详解

    2023-12-20 13:02:35
  • Android Tabhost使用方法详解

    2023-10-02 12:46:46
  • C#6.0中你可能不知道的新特性总结

    2023-08-17 04:25:54
  • C#中使用HttpPost调用WebService的方法

    2023-01-17 18:34:36
  • c# 生成随机时间的小例子

    2023-10-04 02:44:29
  • asp之家 软件编程 m.aspxhome.com