C#事件:就是一个针对对象的可挂接回调函数。
1、声明回调原形,必须为 delegate .....XXXX();
2、在要添加事件的类中,声明事件。
3、在类中选择一个触发事件的时机。触发事件前,一定要先判断事件是否为空!
4、挂接事件。
using System;
public delegate void ChangeEvent(); //1、回调函数的原形
class myClass
{
public event ChangeEvent change; //2、声明事件
int _id;
public int ID
{
get { return _id; }
set {
if ((1 == value) && (change != null))
change(); //3、触发事件。触发事件之前,先要判断事件是否已实例化的(取上面的change != null);
_id = value;
}
}
}
class Test
{
static void Main()
{
myClass c = new myClass();
//4、c对象有一个事件change,下句是添加回调函数实例。
c.change += new ChangeEvent(new Test().Ah);
c.change += new ChangeEvent(yiyi);
c.ID = 1;
Console.Write("c.ID :{0}", c.ID);
}
static void yiyi()
{
Console.Write("yiyi!!\n");
}
void Ah()
{
Console.Write("Ah!\n");
}
}
在网上查找一些关于事件的说明,头都看大了,自已写一个简单的说明。public delegate void ChangeEvent(); //1、回调函数的原形
class myClass
{
public event ChangeEvent change; //2、声明事件
int _id;
public int ID
{
get { return _id; }
set {
if ((1 == value) && (change != null))
change(); //3、触发事件。触发事件之前,先要判断事件是否已实例化的(取上面的change != null);
_id = value;
}
}
}
class Test
{
static void Main()
{
myClass c = new myClass();
//4、c对象有一个事件change,下句是添加回调函数实例。
c.change += new ChangeEvent(new Test().Ah);
c.change += new ChangeEvent(yiyi);
c.ID = 1;
Console.Write("c.ID :{0}", c.ID);
}
static void yiyi()
{
Console.Write("yiyi!!\n");
}
void Ah()
{
Console.Write("Ah!\n");
}
}
够用就行了,不要死拘语法,用一些基本的, 解决问题的方法就行。
最后一句说,C#事件,就是一个针对对象的可挂接回调函数。