Hey, I wondered why is it that the return type of events such as
private void button1_Click(object sender, EventArgs e)
is always void?
For sure, events can return values.
[TestClass]
public class UnitTest1 {
delegate int EventWithReturnValue();
class A {
public event EventWithReturnValue SomeEvent;
public int LastEventResult { get; set; }
public void RaiseEvent() {
LastEventResult = SomeEvent();
}
}
[TestMethod]
public void TestMethod1() {
A a = new A();
a.SomeEvent += new EventWithReturnValue(a_SomeEvent);
a.RaiseEvent();
Assert.AreEqual(123, a.LastEventResult);
}
int a_SomeEvent() {
return 123;
}
}
However, it's not very common to use events return value to exchange information between components and their consumers.