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-25 08:59 pm (UTC)you have managed in this industry,
yet you seem to post, all happy, that you are coding new shit...
why don't you want to move on ? this is far from a dig, I will I could just do somthing and be hapopy with it...
every management book you find, say that intelegent people get so bored, so quickly.. why you have to be diffent??
no subject
Date: 2005-02-25 09:10 pm (UTC)Three weeks ago I started to learn Java.
Next week I'll be learning C#.
New stuff all the time!
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!
no subject
Date: 2005-02-26 02:06 am (UTC)