C# 匿名方法
除了定義事件處理方法外,還可以選擇使用匿名方法(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)存或性能問題。
點(diǎn)擊加載更多評論>>