首页 > 软件操作教程 > 编程开发 > C#
题目内容

C# 匿名方法

题目答案

    除了定义事件处理方法外,还可以选择使用匿名方法(anonymous method)。匿名方法实际上并非传统意义上的方法,它不是某个类上的方法,而纯粹是为用作委托目的而创建的。

要创建匿名方法,需要使用下面的代码:

delegate(parameters)

{

    // Anonymous method code.

};

其中parameters是一个参数列表,这些参数匹配正在实例化的委托类型,由匿名方法的代码使用,例如:

delegate(Connection source, MessageArrivedEventArgs e)

{

    // Anonymous method code matching MessageHandler event in Chl3Ex03.

};

例如,使用这段代码可以完全绕过Chl3Ex03中的Display.DisplayMessage()方法:

    myConnectionl.MessageArrived += 

      delegate(Connection source, MessageArrivedEventArgs e)

      {

        WriteLine($"Message arrived from: {source.Name}");

        HriteLine($"Message Text: {e.Message}");

      };

    使用匿名方法时要注意,对于包含它们的代码块来说,它们是局部的,可以访问这个作用域内的局部变量。如果使用这样一个变量,它就成为外部变量(outer variable)。外部变量在超出作用域时,是不会删除的,这与其他局部变量不同,在使用它们的匿名方法被销毁时,才会删除外部变量。这比我们希望的时间晚一些,所以要格外小心。如果外部变量占用了大量内存,或者使用的资源在其他方面是比较昂贵的(例如资源数量有限),就可能导致内存或性能问题。

网友评论(共0条评论)

请自觉遵守互联网相关政策法规,评论内容只代表网友观点!

最新评论

点击加载更多评论>>

软件操作 新人注册送三重礼

已有 22658 名学员学习以下课程通过考试

相关视频试题

最需教育客户端 软件问题一手掌握

去 App Store 免费下载 iOS 客户端