位置:首页 > 软件操作教程 > 编程开发 > C# > 问题详情

C# 匿名方法

提问人:刘团圆发布时间:2020-12-08

    除了定义事件处理方法外,还可以选择使用匿名方法(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)
返回顶部