unity第二周:关于事件

Posted on 2021-03-22 21:05  Nicela  阅读(70)  评论(0)    收藏  举报

一.

using System;
//事件:操作的反馈
namespace _022_事件
{
public delegate void DelegateHandler(string status);
//写在外面会报错:命名空间不能直接包含字段或方法之类的成员
//说明事件的地位相当于方法得在类的内部
//public event DelegateHandler EventHandler;
class Program
{
public event DelegateHandler EventHandler;//事件生成时调用委托
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}

二.

using System;

namespace _023_事件的例子
{
public class EventClass
{
private int number;
public delegate void DelegateHandler();
public event DelegateHandler EventHandle=null;//事件引用类型,可以赋值为null

public EventClass()
{
int n = 5;
SetNumberValue(n);
}
protected virtual void ChangeNumberValue()//protect表示只有子类可以使用
{
if(EventHandle != null)
{
EventHandle();//触发事件,调用事件,事件可以打括号
//是因为事件是特殊的委托。事件是委托的实例。
}
else
{
Console.WriteLine("事件并没有被触发");
}
}

public void SetNumberValue(int n)
{
if(number!=n)
{
number = n;
ChangeNumberValue();
}
}
}
public class SubcriberEventClass
{
public void SubcribFunction()
{
Console.WriteLine("事件被订阅。");
}
}
class Program
{
static void Main(string[] args)
{
EventClass eventClass = new EventClass();
SubcriberEventClass subcriberEventClass = new SubcriberEventClass();
eventClass.EventHandle += new EventClass.DelegateHandler(subcriberEventClass.SubcribFunction);//这里可以体现事件是委托的实例
eventClass.SetNumberValue(1);
eventClass.SetNumberValue(2);
}
}
}

博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3