手机
当前位置:查字典教程网 >编程开发 >C#教程 >c# 委托和事件实例学习
c# 委托和事件实例学习
摘要:Common.cs:复制代码代码如下:usingSystem;usingSystem.Collections.Generic;usingSy...

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# 委托和事件实例学习】相关文章:

C#绝对路径拼接相对路径的实例代码

c# 快速排序算法

C#动态执行字符串(动态创建代码)的实例代码

c#数据库与TXT导入导出的实例

C#简单获取时间差的小例子

C#实现协同过滤算法的实例代码

解析C#自定义控件的制作与使用实例的详解

C#多维数组学习使用

C#求解哈夫曼树,实例代码

深入委托与多播委托的详解

精品推荐
分类导航