How I spent my Friday afternoon at work
Feb. 25th, 2005 06:53 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
I've just been moved to a new bit of the team, where I will be working in C# - despite the fact I've never been trained in it. I have, luckily, done some at home, in my own time, but bits of it have been known to make my head hurt. In attempt to refresh my memory I threw myself into the one thing that I never really got the hang of - events and delegates.
Delegates replace function pointers, and make them strongly typed (so rather than passing in a function pointer to a callback you pass in a delegate, which contains the function pointer and the type information about that function).
So in order to raise an event that passes a string from the event raiser to the event subscriber I've had to:
1) Declare a Delegate with String parameter called StringDelegate
public delegate void StringDelegate (String MessageString);
2) Declare an Event of type StringDelegate
public event StringDelegate StringEvent;
3) Create a method which takes a String parameter
public void AndyTest( String MessageToPrint )
{
MessageBox.Show( MessageToPrint,"Another Message Box");
}
4) Subscribe the method to the event, using the delegate.
StringEvent += new StringDelegate(AndyTest);
5) Create a method which raises the event
protected virtual void OnStringEvent(String EventMessage)
{
StringEvent(EventMessage);
}
6) Create some code which actually calls the code-raising method
OnStringEvent("Andy");
All of which has made my head hurt a fair bit. On the plus side, that final line _did_ make a message box pop up with the word "Andy" in it, so it's not all bad.
I'm sure the last two bits can be combined in some way, but I left work at that point, it being 5:45
Delegates replace function pointers, and make them strongly typed (so rather than passing in a function pointer to a callback you pass in a delegate, which contains the function pointer and the type information about that function).
So in order to raise an event that passes a string from the event raiser to the event subscriber I've had to:
1) Declare a Delegate with String parameter called StringDelegate
public delegate void StringDelegate (String MessageString);
2) Declare an Event of type StringDelegate
public event StringDelegate StringEvent;
3) Create a method which takes a String parameter
public void AndyTest( String MessageToPrint )
{
MessageBox.Show( MessageToPrint,"Another Message Box");
}
4) Subscribe the method to the event, using the delegate.
StringEvent += new StringDelegate(AndyTest);
5) Create a method which raises the event
protected virtual void OnStringEvent(String EventMessage)
{
StringEvent(EventMessage);
}
6) Create some code which actually calls the code-raising method
OnStringEvent("Andy");
All of which has made my head hurt a fair bit. On the plus side, that final line _did_ make a message box pop up with the word "Andy" in it, so it's not all bad.
I'm sure the last two bits can be combined in some way, but I left work at that point, it being 5:45
no subject
Date: 2005-02-26 12:51 am (UTC)Oh, and if you want a GUI java development environment, since I think you had mentioned you didn't have one, check out Eclipse (www.eclipse.org). It's a free open-source IDE with a built-in JDE. Seems rather complicated to me so far, but we're planning on using it at my work, so I've been trying to get the hang of it.
no subject
Date: 2005-02-26 06:10 pm (UTC)And the tutorial I found said to call the function that. I have no idea why, and having changed the code it's not necessary to call it that at all.
no subject
Date: 2005-02-26 06:14 pm (UTC)More experimenation required!