首页 > 代码库 > .net基础扫盲-小例子串委托、匿名方法、lamuda表达式

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

我把委托理解为:委托是一种方法的格式,当然他也是一种类型。

只要是方法的格式跟委托定义的格式是一样的,那么就可以把该方法附加给该委托。看以下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); };

匿名方法和拉姆达表达式的出现,使得写方法变得更加简便了。



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