c# 匿名方法

匿名方法是在2.0版本引入的,之前声明委托的唯一方法是 "命名方法”,3.0以后引入了Lambda表达式,委托多用Lambda表达式进行声明,与Lambda表达式相比,匿名方法可以忽略参数列表(当然也是某些情况下)

1.为什么要使用匿名方法呢???

在写代码的过程当中,我们可能会经常使用到委托,比如事件,集合的查找,跨线程访问控件利用控件的Invoke方法等等,在声明委托的时候,如果我们额外定义一个方法,而这个方法只被这个委托使用的话,总会感觉

代码结构有点乱,匿名方法声明委托,就会使代码结构变得简洁,也会省去实例化的一些开销

2.匿名方法的语法:

匿名方法一般都是与委托结合使用的,委托定义以后,在声明委托的时候,可以使用匿名方法 delegate(参数) {匿名方法体;} 大括号部分就是匿名方法,一般匿名方法代码都比较少。举例子:

        List<string> list = new List<string>();
            list.Add("NameA");
            list.Add("NameB");
            list.Add("c");
            list.Add("NameD");

            list.FindAll(new Predicate<string>(match));

       public bool match(string ss)
        {
            return ss.StartsWith("Name");
        }

这是不适用匿名方法的情况,每次使用委托都要命名一个方法,代码非常不简洁。

         List<string> list = new List<string>();
            list.Add("NameA");
            list.Add("NameB");
            list.Add("c");
            list.Add("NameD");

            List<string> b = list.FindAll(delegate(string aa){
                return aa.StartsWith("Name");
        });

这是使用匿名方法的情况,代码非常简洁。 只需要在需要调用的地方定义,delegate关键字+参数列表+{语句;}

3.需要注意的是:

我们说过匿名方法可以忽略参数列表,这是有条件的,即 方法体重没有使用到参数,如果使用到,必须添加参数列表

 

posted @ 2014-04-14 17:07  大侠的哥哥是菜鸟  阅读(229)  评论(0编辑  收藏  举报