ASP.NET 2.0泛型和匿名方法

泛型:

泛型概述:泛型可应用于类、方法、结构、接口、委托等设计中,兼复用性、类型安全和高效率于一身是与之对就的非泛型所不及的应用泛型,必须使用类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);}
}
}

时间: 2024-12-22 07:52:31

ASP.NET 2.0泛型和匿名方法的相关文章

网络编程经验技巧:ASP.NET2.0泛型和匿名方法

asp.net|编程|技巧|网络 泛型: 泛型概述:泛型可应用于类.方法.结构.接口.委托等设计中,兼复用性.类型安全和高效率于一身是与之对就的非泛型所不及的应用泛型,必须使用类System.Collections.Generic.Stack.该类的声明方式如下: System.Collections.Generic.Stack (声明代码) 可以把Stack类想像成具有如下示意性处理过程: Stack类示意性代码: public class stack<> { T[] item; int c

C# 2.0:使用匿名方法、迭代程序和局部类来创建优雅的代码

程序|创建 本文基于 Microsoft Visual Studio 2005 的预发布版本,它以前的代码名称为"Whidbey".此处所包含的任何信息都可能会改变. 本文讨论: • 遍历集合 • 跨文件类定义 • 与委托一起使用的匿名方法 • Visual Studio 2005 中的其他 C# 新功能 本文使用下列技术: • C# 和 Visual Studio 可以在此下载代码: • C20.exe (164KB) 本页内容 迭代程序 迭代程序实现 递归迭代 局部类型 匿名方法

MetaBuilders在ASP.NET FORUMS2.0中的应用方法

asp.net 曾听到朋友报怨ASP.NET FORUMS2.0中因为使用了MetaBuilders使得化码不太直观,呵,有利有有弊,使用这个控件目的在于统一界面. 比方说在管理页面中一般都会分成左右两栏,在ASP.NET可能比较常用的方法有两种,一种是使用框架,还有一种是使用一个表现左边的asxc来统一.那么使用了MetaBuilders之后是一种什么情况呢?我觉得和使用了框架页面差不多,不过里面没有了分栏,页面看起来是一个整体,页面变成了一个容器,包含了其他的一些分页,这种做法就要比使用as

ASP.NET 2.0服务器控件之Render方法

控件呈现是指向HTTP输出流中写入标记文本的过程.服务器通过HTTP输出流 向客户端发送生成的标记文本,这些文本将会通过客户端浏览器转换为可视化的 元素显示出来.使用控件呈现,开发人员可以将HTML标记.脚本代码.CSS样式 表等等输入到客户端浏览器.实现服务器控件呈现主要有两种方式:一是 Control类的Render方法,二是WebControl的RenderContents方法.本文重点介 绍使用Control类的Render方法实现控件呈现的应用. 使用HtmlTextWriter类 C

C# 2.0的Specification(匿名方法)(二)

21.7委托实例相等性 如下规则适用由匿名方法委托实例的相等运算符(§7.9.8)和object.Equals方法产生的结果. l 当委托实例是由具有相同被捕获外部变量集合的语义相同的匿名方法表达式计算而产生时,可以说(但不是必须)它们相等. l 当委托实例由具有语义不同的匿名方法表达式,或具有不同的被捕获外部变量集合时,它们决不相等. 21.8明确赋值 匿名方法参数的明确赋值状态与命名方法是相同的.也就是,引用参数和值参数被明确的赋初值,而输出参数不用赋初值.并且,输出参数在匿名方法正常返回之

C# 2.0的Specification(匿名方法)(一)

21匿名方法21.1.匿名方法表达式 匿名方法表达式(anonymous-method-expression)定义了匿名方法(anonymous method),它将计算为引用该方法的一个具体值. l primary-no-array-creation-expression(基本非数组创建表达式:) - anonymous-method-expression(匿名方法表达式) l anonymous-method-expression: delegate anonymous-method-sig

高阶函数、委托与匿名方法

高阶函数(higher-order function)是指把另一个函数作为参数或返回值的函数.例如 在JavaScript语言中,Function是顶级类型.一个函数就是类型为 Function的顶级对象,自 然就可以作为另一个函数的参数或返回值.例如在Microsoft AJAX Library(ASP.NET AJAX 的客户端类库)中有一个被广泛使用的createDelegate方法.该方法接受一个对象A和一个函 数F作为参数,并返回一个函数R.当调用函 数R时,F函数将被调用,并且保证无

将 JavaScript 与 ASP.NET 2.0 配合使用

asp.net|javascript 将 JavaScript 添加到服务器控件 将 JavaScript 添加到位于 ASP.NET 页面中的某个特定服务器控件是非常简单的.我们以按钮服务器控件为例.如果您使用任一 Microsoft Visual Studio 2005 将 Button HTML 服务器控件(HtmlInputButton 类)拖放到某个页面中,并将其作为服务器控件运行,则应具有以下代码结构: <input id="Button1" type="b

匿名方法,Lambda表达式,高阶函数

原文:匿名方法,Lambda表达式,高阶函数 匿名方法 c#2.0引入匿名方法,不必创建单独的方法,因此减少了所需的编码系统开销. 常用于将委托和匿名方法关联,例如 1. 使用委托和方法关联: this.btnRefresh.Click += new System.EventHandler(this.btnRefresh_Click);private void btnRefresh_Click(object sender, EventArgs e){    BindData();} 2. 使用委