Why do event handlers always have a return type of void?

前端 未结 11 2138
夕颜
夕颜 2020-12-05 23:30

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?

11条回答
  •  再見小時候
    2020-12-06 00:13

    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.

提交回复
热议问题