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

C# 匿名方法

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

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

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

delegate(parameters)

{

    // Anonymous method code.

};

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

delegate(Connection source, MessageArrivedEventArgs e)

{

    // Anonymous method code matching MessageHandler event in Chl3Ex03.

};

例如,使用這段代碼可以完全繞過(guò)Chl3Ex03中的Display.DisplayMessage()方法:

    myConnectionl.MessageArrived += 

      delegate(Connection source, MessageArrivedEventArgs e)

      {

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

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

      };

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

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

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