// イベント
class Program
{
static void Main(string[] args)
{
// イベント
MyEvent myEvent = new MyEvent();
myEvent.OverFlow += new EventHandler(EventProc);
for (int i = 0; i < 5; i++)
{
// 5回繰り返して加算処理を行い100を超えると
// OverFlowイベントが発生する。
string s = Console.ReadLine();
int a = Int32.Parse(s);
myEvent.Add(a);
Console.WriteLine("data = " + myEvent.data);
}
}
// イベント処理を行うメソッド
public static void EventProc(string s)
{
Console.WriteLine("*** イベントが通知されました ***");
Console.WriteLine(s);
}
}
//デリゲートの宣言
public delegate void EventHandler(string s);
// イベントを発生する側のクラス
public class MyEvent
{
// デリゲートをデータ型としたフィールド
public event EventHandler OverFlow;
public int data = 0;
public void Add(int a)
{
if (this.data + a > 100)
{
OverFlow("データを加算できません");
}
else
{
this.data += a;
}
}
}