今天在一个项目中看到委托与事件的使用,故重新整理一个简单易懂的例子,仅供参考而已。
namespace DelegateAndEvent
{
public delegate void delegateTest(int a);//定义一个委托
public delegate void delegateErr(Exception e);//定义一个报错委托
class Program
{
static void Main(string[] args)
{
object r = Console.ReadLine();
class1 c = new class1();
c.getTest += new delegateTest(c_getTest);//添加事件函数
c.getErr += new delegateErr(c_getError);//添加事件函数
c.start(r);
Console.ReadKey();
}
static void c_getTest(int a)
{
Console.WriteLine("您输入的数字是:" + a);
}
static void c_getError(Exception e)
{
Console.WriteLine(e.ToString());
}
}
public class class1
{
public event delegateTest getTest = null;//定义一个事件
public event delegateErr getErr = null;//定义一个报错事件
public class1()
{
}
/// <summary>
/// 开始执行
/// </summary>
/// <param name="a"></param>
public void start(object a)
{
try
{
if (null != getTest)
{
getTest(Convert.ToInt16(a));
}
}
catch (Exception e)
{
getError(e);
}
}
/// <summary>
/// 报错机制
/// </summary>
/// <param name="e"></param>
public void getError(Exception e)
{
if (null != getErr) getErr(e);
}
}
}