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#实现猜数字游戏具体代码,供大家参考,具体内容如下给定一个0-100的随机数字猜其大小题目样式:电脑产生一个0到100之间的随机数字,并且...
[阅读全文]
-
-
C# 可空类型的具体使用
在项目中我们经常会遇到可为空类型,那么到底什么是可为空类型呢?下面我们将从4个方面为大家剖析。1、可空类型基础知识顾名思义,可空类型指的就是某个对象类型可以为空...
[阅读全文]
-
-
-
C#实现猜数字小游戏
本文实例为大家分享了c#实现猜数字小游戏的具体代码,供大家参考,具体内容如下效果如图:代码:using system;using system.collecti...
[阅读全文]
-
-
C#实现简单俄罗斯方块
最近在看《.net游戏编程入门经典 c#篇》 第一章介绍了如何制作俄罗斯方块,自己试了试按照书上的步骤,可算是完成了。于是写下这篇文章留作纪念。1.类的设计在充...
[阅读全文]
-
-
网友评论