繁体   English   中英

C#-Event / EventHandler语法

[英]C# - Event/EventHandler syntax

在我的ASP.NET .NET 4书中,我看到了以下语法:

public event EventHandler<AddressEventArgs> SaveButtonClick;

我不熟悉此语法,尤其是事件处理程序旁边的“ <>”。 有人可以解释上面的代码吗?

这本书的完整代码示例如下。

//Declare custom EventArgs to be used
public class AddressEventArgs : EventArgs {
    public AddressEventArgs(string addressLine1, string addressLine2,
    string city, string state, string postalCode) {
        this.AddressLine1 = addressLine1;
        this.AddressLine2 = addressLine2;
        this.City = city;
        this.State = state;
        this.PostalCode = postalCode;
    }
    public string AddressLine1 { get; private set; }
    public string AddressLine2 { get; private set; }
    public string City { get; private set; }
    public string State { get; private set; }
    public string PostalCode { get; private set; }
}

//Code in a user control raising the event on a button click
public event EventHandler<AddressEventArgs> SaveButtonClick;
protected void ButtonSave_Click(object sender, EventArgs e) {
    if (SaveButtonClick != null) {
        SaveButtonClick(this, new AddressEventArgs(TextBoxAddress1.Text,
        TextBoxAddress2.Text, TextBoxCity.Text, TextBoxState.Text,
        TextBoxPostalCode.Text));
    }
}

“ <>”表示EventHandler是通用类型。 如果您从未接触过泛型,建议您阅读这篇文章:

C#泛型简介

基本上,您可以将泛型视为一个特殊类,您可以指定要存储在其中的对象的类型/使其适用。 完成此操作后,将强类型化方法和与类的交互,因此您无需强制转换或将其存储为object类型。

最常用的泛型是List<T>类型。 它与数组相似,但是具有灵活的大小(您无需重新声明其大小),并且具有便捷的方法,如Add()Remove()RemoveAt()等。因此, List<int>可以存储所需的许多整数,并且List<MyClass>对象将用于存储MyClass对象的集合。

此语法称为“泛型”。 请访问http://msdn.microsoft.com/zh-cn/library/ms379564(VS.80).aspx ,以了解该概念。

在这种情况下,通常会说此事件将使用AddressEventArgs类将详细信息传递给处理程序。

如果您熟悉旧的.NET事件语法(在存在泛型之前),请查看http://codebetter.com/jpboodhoo/2007/07/11/leveraging-the-eventhandler-lt-t-gt-更有效地委托进行比较

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM