匿名方法是C#2.0的一个新的语言特性。本文的主要内容是提供给读者关于C#匿名方法的内部实现和工作方式的一个更好的理解。本文无意于成为C#匿名方法的完全语言特性参考。

C#匿名方法允许我们定义委托对象可以接受的代码块。这个功能省去我们创建委托时想要传递给一个委托的小型代码块的一个额外的步骤。它也消除了类代码中小型方法的混乱。让我们看看:比方说,我们有一个字符串集合命名为MyCollection。这个类有一个方法:获得集合中满足用户提供的过滤准则的所有项,调用者决定在集合中的一个特殊项是否符合条件而被检索到,作为从此方法返回数组的一部分。
- public class MyCollection
 - {
 - public delegate bool SelectItem(string sItem);
 - public string[] GetFilteredItemArray(SelectItem itemFilter)
 - {
 - List
 sList = new List (); - foreach(string sItem in m_sList)
 - {
 - if (itemFilter(sItem) == true) sList.Add(sItem);
 - }
 - return sList.ToArray();
 - }
 - public List
 ItemList - {
 - get
 - {
 - return m_sList;
 - }
 - }
 - private List
 m_sList = new List (); - }
 
我们可以用上面定义的类写如下所示的代码:
- public class Program
 - {
 - public static void Main(string[] args)
 - {
 - MyCollection objMyCol = new MyCollection();
 - objMyCol.ItemList.Add("Aditya");
 - objMyCol.ItemList.Add("Tanu");
 - objMyCol.ItemList.Add("Manoj");
 - objMyCol.ItemList.Add("Ahan");
 - objMyCol.ItemList.Add("Hasi");
 - //获得集合中以字母’A‘开头的字符项数组
 - string[] AStrings = objMyCol.GetFilteredItemArray(FilterStringWithA);
 - Console.WriteLine("----- Strings starting with letter ''A'' -----");
 - foreach(string s in AStrings)
 - {
 - Console.WriteLine(s);
 - }
 - //获得集合中以字母’T‘开头的字符项数组
 - string[] TStrings = objMyCol.GetFilteredItemArray(FilterStringWithT);
 - Console.WriteLine("----- Strings starting with letter ''T'' -----");
 - foreach(string s in TStrings)
 - {
 - Console.WriteLine(s);
 - }
 - }
 - public static bool FilterStringWithA(string sItem)
 - {
 - if (sItem[0] == ''A'')
 - return true;
 - else
 - return false;
 - }
 - public static bool FilterStringWithT(string sItem)
 - {
 - if (sItem[0] == ''T'')
 - return true;
 - else
 - return false;
 - }
 - }
 
以上介绍C#匿名方法学习总结
Copyright © 2009-2022 www.wtcwzsj.com 青羊区广皓图文设计工作室(个体工商户) 版权所有 蜀ICP备19037934号