代码之家  ›  专栏  ›  技术社区  ›  roman m

在ASP.NET中订阅事件的最佳方式是什么?

  •  1
  • roman m  · 技术社区  · 16 年前

    我做了一些 reading on SO ,但没有找到我问题的答案。

    正如@Canavar指出的那样 in his answer 订阅活动有两种方式:

    声明的:

    <asp:Button runat="server" ID="myButton" OnClick="myButton_Click" />  
    

    myButton.Click += new EventHandler(myButton_Click);
    

    我以声明的方式订阅事件,但很少在默认事件处理程序中使用“sender”和EventArgs。大多数时候,我都会从事件处理程序调用一个方法。

    使用委托订阅事件是否更好?

    myButton.Click += delegate{DoStuff();};
    

    3 回复  |  直到 9 年前
        1
  •  3
  •   Kelsey    16 年前

    处理程序需要匹配事件的指定参数。如果您使用委托,您将只定义相同的内容。丢弃参数似乎是一种浪费,因为出于某种原因,将来可能需要它们。我想不出任何理由不想要这些参数。

    事件处理程序已经是委托:)

        2
  •  2
  •   jrista    16 年前

    这并不意味着命令式方法是无用的。有时无法以声明方式应用处理程序。即动态场景。命令式方法允许您使用代码创建动态内容,并且仍然可以连接事件。使用最适合场景的内容。没有一个合适的方法,两者都有各自的定位。

        3
  •  0
  •   Chris Brandsma    16 年前

    我最喜欢的:

    myButton.Click += myButton_Click;
    

    实际上并不需要EventHandler。此外,如果您是C#3.0,您可以使用lambda:

    myButton.Click += (x,a)=>DoStuff();  // something like that.