您的位置:首页 > 其它

.net基础扫盲-小例子串委托、匿名方法、lambda表达式

2015-01-31 20:58 381 查看
我把委托理解为:委托是一种方法的格式,当然他也是一种类型。
只要是方法的格式跟委托定义的格式是一样的,那么就可以把该方法附加给该委托。看以下demo

声明委托:

<p style="margin:0in;font-family:微软雅黑;font-size:12.0pt"></p><pre name="code" class="csharp">public delegate void Add(int a,int b );




声明一个格式相同的方法:

static void OtherMethod(int a ,int b)
        {
            Console.WriteLine(a+b);
        }


给类声明一个委托类型的成员变量

public class Person
    {
        public string Name { set; get; }
        public string Age { set; get; }
        public Add MyAdd ;
    }


将方法附加给委托,调用,测试如下:

static voidMain(string[] args)
{
    Person p1 =new Person ();
    p1.MyAdd = OtherMethod;
    p1.MyAdd(7, 8);
 
    Console.ReadLine();
}


控制台输出—— 15

如果我们定义的OtherMethod不常用,就没有必要单独声明一个方法。可以用匿名方法,即:在给委托附加方法的时候,直接构造一个跟委托格式相同的匿名方法就可以了:
写法如下:

p1.MyAdd = delegate(inta, int b) { Console.WriteLine(a + b); };


匿名方法,顾名思义,没有方法名,只有方法参数和方法的算法,可真是够简单了。

同样我们也可以直接用lamuda表达式,直接构造一个方法,如下:

p1.MyAdd = (int a, int b) => {Console.WriteLine(a + b); };


匿名方法和拉姆达表达式的出现,使得写方法变得更加简便了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐