正在阅读:C# 编程语言的未来功能C# 编程语言的未来功能

2009-03-12 23:34 出处:PConline 作者:Microsoft/ASPCool 责任编辑:ycx
定义迭代程序 由于迭代程序是 foreach 循环结构的逻辑对应物,因此其定义方式类似于函数:使用 foreach 关键字并在后面带有一对圆括号。在以下示例中,程序将为 List 类型声明一个迭代程序。迭代程序的返回类型由用户决定,但是由于 List 类内部存储的是对象类型,因此以下迭代程序示例的返回类型为对象: public class List { internal object[] elements; internal int count; public object foreach() { } } 值得注意的是,实现枚举器模式后,程序需要维护内部状态机以便跟踪程序在数据结构中的位置。迭代程序具有内置状态机。使用新的 yield 关键字,程序可以将值返回到调用该迭代程序的 foreach 语句。当 foreach 语句下次循环并再次调用迭代程序时,此迭代程序将在上一个 yield 语句停止的位置开始执行。在以下示例中,程序将生成三个字符串类型: public class List { internal object[] elements; internal int count; public string foreach() { yield "microsoft"; yield "corporation"; yield "developer division"; } } 在以下示例中,调用此迭代程序的 foreach 循环将执行三次,每次都会按照前三个 yield 语句指定的顺序接收字符串: List list = new List(); foreach(string s in list) { Console.WriteLine(s); } 如果要让程序实现迭代程序以遍历列表中的元素,则需要使用 foreach 循环修改此迭代程序使其遍历元素数组,并在每次迭代中产生数组中的每个项目: public class List { internal object[] elements; internal int count; public object foreach() { foreach(object o in elements) { yield o; } } } 迭代程序的工作原理 迭代程序代表所在的程序处理实现枚举器模式的日常操作。C# 编译器将您在迭代程序中编写的代码转换成使用枚举器模式的相应类和代码,而无需创建类和建立状态机。通过这种方式,迭代程序显著提高了开发人员的工作效率。 匿名方法 匿名方法是另一种实用的语言结构,它使程序员能够创建可装箱在委托中、并且可在以后执行的代码块。它们基于称作 λ 函数的语言概念,并且类似于 Lisp 和 Python 中的对应语言概念。 创建委托代码 委托是引用方法的对象。调用委托时,将调用它所引用的方法。以下示例举例说明了一个简单的窗体,其中包含列表框、文本框和按钮三个控件。初始化按钮时,程序将指示其 Click 委托引用该对象中其他位置存储的 AddClick 方法。在 AddClick 方法中,文本框的值存储在列表框中。由于 AddClick 方法被添加到按钮实例的 Click 委托中,因此每次单击该按钮时都将调用此方法。 public class MyForm { ListBox listBox; TextBox textBox; Button button; public MyForm() { listBox = new ListBox(...); textBox = new TextBox(...); button = new Button(...); button.Click += new EventHandler(AddClick); } void AddClick(object sender, EventArgs e) { listBox.Items.Add(textBox.Text); } }
键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品