失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 在C#中使用代理的方式触发事件 的简单习作

在C#中使用代理的方式触发事件 的简单习作

时间:2023-11-20 01:34:16

相关推荐

在C#中使用代理的方式触发事件 的简单习作

程序简单就 不再作说明了.

在学习IssueVision的OBSERVER(观察者)模式时由于对代理和事件不是很熟悉,遇到了一些问题,所以就有了这个简单习作.

TestEvent.cs

using System;

namespace ConsoleApplication2

{

/// <summary>

/// Class1 的摘要说明。

/// </summary>

class TestEvent

{

/// <summary>

/// 应用程序的主入口点。

/// </summary>

[STAThread]

static void Main(string[] args)

{

//

// TODO: 在此处添加代码以启动应用程序

//

TestEvent c = new TestEvent();

c.Test();

}

public void Test()

{

ChangeNumber number = new ChangeNumber();

number.BigEvent += new ChangeNumber.ChangeHandler(this.Big);

number.SmallEvent += new ChangeNumber.ChangeHandler(this.Small);

number.EqualEvent += new ChangeNumber.ChangeHandler(this.Equal);

number.Number = 1; //运行之前Number=0;

number.Number = 1; //运行之前Number=1;

number.Number = 0; //运行之前Number=1;

}

public void Big()

{

Console.WriteLine("big");

}

public void Small()

{

Console.WriteLine("small");

}

public void Equal()

{

Console.WriteLine("equal");

}

}

}

ChangeNumber.cs

using System;

namespace ConsoleApplication2

{

/// <summary>

/// Class2 的摘要说明。

/// </summary>

public class ChangeNumber

{

public delegate void ChangeHandler();

public event ChangeHandler BigEvent;

public event ChangeHandler SmallEvent;

public event ChangeHandler EqualEvent;

public ChangeNumber()

{

//

// TODO: 在此处添加构造函数逻辑

//

}

private int m_number = 0;

public int Number

{

set

{

if(value > this.m_number)

{

BigEvent(); //这时最好先判断一下BigEvent是不是为null

}

else if(value < this.m_number)

{

SmallEvent();

}

else

{

EqualEvent();

}

m_number = value;

}

}

}

}

如果觉得《在C#中使用代理的方式触发事件 的简单习作》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。