我爱Aspx >> Asp.Net >> Visual C# 2.0匿名方法揭密
推荐:Visual C# 轻松入门全攻略
匿名方法基础匿名方法是C#2.0的一个新的语言特性。本文的主要内容是提供给读者关于匿名方法的内部实现和工作方式的一个更好的理解。本文无意于成为匿名方法的完全语言特性参考。
匿名方法允许我们定义委托对象可以接受的代码块。这个功能省去我们创建委托时想要传递给一个委托的小型代码块的一个额外的步骤。它也消除了类代码中小型方法的混乱。让我们看看:比方说,我们有一个字符串集合命名为MyCollection。这个类有一个方法:获得集合中满足用户提供的过滤准则的所有项,调用者决定在集合中的一个特殊项是否符合条件而被检索到,作为从此方法返回数组的一部分。
| public class MyCollection{ public delegate bool SelectItem(string sItem); public string[] GetFilteredItemArray(SelectItem itemFilter) { List<string> sList = new List<string>(); foreach(string sItem in m_sList) { if (itemFilter(sItem) == true) sList.Add(sItem); } return sList.ToArray(); } public List<string> ItemList { get { return m_sList; } } private List<string> m_sList = new List<string>();} |
我们可以用上面定义的类写如下所示的代码:
| 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# 3.0的五项主要改进[03-16]
病毒及流氓软件自我复制的简单实..[03-16]
在C#中建立复杂的、灵活的SQL查询..[03-16]
用C#和WMI获取逻辑驱动器详细信息[03-16]
Visual C# 2.0匿名方法揭密[03-16]
用Visual C#开发简单的复合控件[03-16]
深入理解C# 3.0的五项主要改进[03-16]
病毒及流氓软件自我复制的简单实..[03-16]
深入理解C# 3.0的五项主要改进[03-16]
缓冲区溢出还是问题吗?C++/CLI安..[03-16]
“不完美”的VS 2005 Team Syste..[03-16]
实例解析C++/CLI中的继承与枚举[03-16]
实例解析C++/CLI中的接口与泛型[03-16]
病毒及流氓软件自我复制的简单实..[03-16]
微软软件开发技术二十年回顾[03-16]
“不完美”的VS 2005 Team Syste..[03-16]
实例解析C++/CLI中的继承与枚举[03-16]
实例解析C++/CLI中的接口与泛型[03-16]