con*_*att 0 c# events .net-4.0 event-handling
在我的ASP.NET .NET 4书中,我看到了这样的语法:
public event EventHandler<AddressEventArgs> SaveButtonClick;
Run Code Online (Sandbox Code Playgroud)
我不熟悉这种语法,尤其是事件处理程序旁边的"<>".有人可以解释一下上面的代码吗?
本书的完整代码示例如下.
//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));
}
}
Run Code Online (Sandbox Code Playgroud)
'<>表示这EventHandler是一种泛型类型.如果您在我建议您阅读本文之前从未接触过仿制药:
基本上,您可以将泛型视为一个特殊类,您可以指定要存储在其中的对象类型/适用于它.一旦你这样做,方法和与类的交互是强类型的,所以你不需要转换东西,或被迫将它们存储为一个object类型.
一种非常常用的泛型是List<T>类型.它类似于一个数组,但有一个灵活的大小(你不需要重新申报其大小),你有方便的方法,如Add(),Remove(),RemoveAt(),等于是一个List<int>可以存储你想然而,许多整数和List<MyClass>对象将用于存储MyClass对象的集合.