読者です 読者をやめる 読者になる 読者になる

checkpoint

自分用のIT技術系ノートです。古い情報や間違っている情報もあるので注意。

デリゲートとイベント

C#

なんだかんだでいざ使う時には忘れてたりするので、一般的な使い方。

//eventargs
public class MessageDisplayEventArgs : EventArgs
{
public MessageDisplayEventArgs(string _message)
{
this.message = _message;
}

public string Message
{
//get...
}
private string message;
}

//eventhandler
public delegate void MessageDisplayEventHandler(object sender, MessageDisplayEventArgs e);


//イベント発生側 (objectA)
//event
public event MessageDisplayEventHandler Message;
//message method
private void onMessage(MessageDisplayEventArgs e)
{
if(this.Message != null)
{
this.Message(this, e);
}
}


//イベント処理側 (objectB)
//display method
private void displayMessage(object sender, MessageDisplayEventArgs e)
{
Console.WriteLine(sender.ToString());
Console.WriteLine(e.Message);
}
//attach eventhandler
...
MessageDisplayEventHandler msgHandler = new MessageDisplayEventHandler(this.displayMessage);
objectA.Message += msgHandler;


objectBがobjectAより先に破棄されるなら、忘れずデタッチしておく。