ASP.NET2.0泛型和匿名方法介绍
本文导语: 泛型概述:泛型可应用于类、方法、结构、接口、委托等设计中,兼复用性、类型安全和高效率于一身是与之对就的非泛型所不及的应用泛型,必须使用类System.Collections.Generic.Stack。该类的声明方式如下: System.Collections.Generic.Stac...
泛型概述:泛型可应用于类、方法、结构、接口、委托等设计中,兼复用性、类型安全和高效率于一身是与之对就的非泛型所不及的应用泛型,必须使用类System.Collections.Generic.Stack。该类的声明方式如下:
System.Collections.Generic.Stack (声明代码)
可以把Stack类想像成具有如下示意性处理过程:
Stack类示意性代码:
public class stack
{
T[] item;
int count;
public void Push(T item) {}
public T pop(){}
}
可以为泛型设置3种类型参数的约束:派生约束、构造函数约束、引用/值类型约束
匿名方法的概述:在C#1.x中,使用支持调用方法的委托来实现事件。委托提供运算符和方法来添加或删除目标方法,也可以在整个.Net框架中广泛地用于事件、回调、异步调用、多线程等。然而,为了使用一个委托,有时不得不创建一个类或方法,这种做法过于麻烦,且与开发人员的思维习惯不相符。例如,下面的示例实现了从一个包含列表框、文本框和按钮的窗体中获取简单的输入。当按下按钮时,文本框中的文本会被添加到列表框中。在C#1.x中,使用委托来实现事件机制,代码如下所示
使用C#1.x的实现 代码
class InputForm:From
{
ListBox listBox;
TextBox textBox;
Button addButton;
pulic MyForm()
{
listBox = new ListBox();
textBox = new TextBox();
addButton = new Button();
}
........
void AddClick(object sender,EventArgs e)
{
listBox.Items.Add(textBox.Text)
}
}
匿名方法允许将与一个关联的代码(通常指方法实体)“内嵌”到使用委托的地方,这样委托和方法实体都集中在一起
使用匿名方法的实现代码(无参)
class InputForm:From
{
ListBox listBox;
TextBox textBox;
Button addButton;
pulic MyForm()
{
listBox = new ListBox();
textBox = new TextBox();
addButton = new Button();
addButton.Click += delegate { listBox.Items.Add(textBox.Text);}
}
}