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

2009-03-12 23:34 出处:PConline 作者:Microsoft/ASPCool 责任编辑:ycx
使用匿名方法 上一个示例非常直观。其中创建了一个单独的函数,并对其进行了委托引用,每当调用此委托时,程序都会调用该函数。在该函数中,执行了一系列的可执行步骤。使用匿名方法,程序无需为该类创建整个新方法,而可以直接引用委托中包含的可执行步骤。匿名方法的声明方法是先实例化一个委托,然后在实例化语句之后加上一对表示执行范围的花括号,最后加上一个用于终止语句的分号。 在以下示例中,程序修改委托创建语句以直接修改列表框,而不是引用代表程序来修改该列表框的函数。存储代码的目的是为了修改委托创建语句之后的执行范围中的列表框。 public class MyForm { ListBox listBox; TextBox textBox; Button button; public MyForm() { listBox = new ListBox(...); textBox = new TextBox(...); button = new Button(...); button.Click += new EventHandler(sender, e) { listBox.Items.Add(textBox.Text); }; } } 请注意,“匿名”方法中的代码是如何访问和处理其执行范围以外声明的变量的。实际上,匿名方法可以引用由类和参数声明的变量,也可以引用所在方法声明的局部变量。 向匿名方法传递参数 有趣的是,“匿名”方法语句包含两个参数,即 sender 和 e。查看 Button 类的 Click 委托的定义,您会发现委托引用的任何函数都必须包含两个参数,第一个参数为对象类型,第二个参数为 EventArgs 类型。在第一个示例中,程序未使用“匿名”方法,而是向 AddClick 方法传递了两个参数,类型分别为对象和 EventArgs。 即使以内联方式编写此代码,委托仍必须接收两个参数。在“匿名”方法中,必须声明两个参数的名称,这样关联的代码块才能使用它们。当触发按钮上的 Click 事件时,将调用“匿名”方法并将相应的参数传递给该方法。 匿名方法的工作原理 遇到“匿名”委托时,C# 编译器会自动将其执行范围内的代码转换为唯一命名类中的唯一命名函数。然后将设置存储代码块的委托,以引用编译器生成的对象和方法。调用委托时,将通过编译器生成的方法执行“匿名”方法块。 局部类型 尽管在单个文件中维护类型的所有源代码是面向对象编程的好方法,但有时性能约束会使得类型变大。此外,在某些情况下将类型分割成子类型所耗费的开销是无法让人接受的。而且,程序员经常会创建或使用应用程序来发布源代码和修改结果代码。遗憾的是,当再次发布源代码时,所有现有的源代码修改将被覆盖。 局部类型允许您将包含大量源代码的类型分割成多个不同的源文件,以便于开发和维护。此外,局部类型可用于将计算机生成的类型部分与用户编写的类型部分分隔开,从而更易于补充或修改工具生成的代码。 在以下示例中,两个 C# 代码文件 File1.cs 和 File2.cs 中都定义了名为 Foo 的类。如果不使用局部类型,将会出现编译错误,因为这两个类存在于同一个命名空间中。使用 partial 关键字,可以指示编译器:别处可能包含此类的其他定义。 File1.cs File2.cs public partial class Foo { public void MyFunction() { // 在此处执行操作 } } public partial class Foo { public void MyOtherFunction() { // 在此处执行操作 } } 编译时,C# 编译器将收集局部类型的所有定义并将它们组合在一起。编译器生成的结果 IL 显示了组合而成的单个类,而不是将多个类分别作为单独的类进行连续显示。
键盘也能翻页,试试“← →”键

关注我们

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