位置:首頁 > 軟件操作教程 > 編程開發(fā) > C# > 問題詳情

C# 匿名方法

提問人:劉團(tuán)圓發(fā)布時間:2020-12-08

    除了定義事件處理方法外,還可以選擇使用匿名方法(anonymous method)。匿名方法實(shí)際上并非傳統(tǒng)意義上的方法,它不是某個類上的方法,而純粹是為用作委托目的而創(chuàng)建的。

要創(chuàng)建匿名方法,需要使用下面的代碼:

delegate(parameters)

{

    // Anonymous method code.

};

其中parameters是一個參數(shù)列表,這些參數(shù)匹配正在實(shí)例化的委托類型,由匿名方法的代碼使用,例如:

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}");

      };

    使用匿名方法時要注意,對于包含它們的代碼塊來說,它們是局部的,可以訪問這個作用域內(nèi)的局部變量。如果使用這樣一個變量,它就成為外部變量(outer variable)。外部變量在超出作用域時,是不會刪除的,這與其他局部變量不同,在使用它們的匿名方法被銷毀時,才會刪除外部變量。這比我們希望的時間晚一些,所以要格外小心。如果外部變量占用了大量內(nèi)存,或者使用的資源在其他方面是比較昂貴的(例如資源數(shù)量有限),就可能導(dǎo)致內(nèi)存或性能問題。

繼續(xù)查找其他問題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部