什么是匿名委托?

使用Delegate的时候很多时候没必要使用一个普通的方法(比如说上一篇文章中说的用Test()方法来传进去 定义的委托名字Mydelegate ),因为这个方法只有这个Delegate会用,并且只用一次,这时候使用匿名方法最合适。

 

匿名方法就是没有名字的方法。

 

3就是没有名字的int对象。3+5就是两个匿名int对象的相加,允许匿名对象,就允许匿名方法。

 

MyDelegate p = delegate(string s)

            {

                Console.WriteLine(s);

            };

 

 

知道C#中有匿名方法,看到这种写法知道是匿名函数即可。

 

匿名方法与lambda表达式最终编译为一个方法。

 

解释一下:这里用delegate  关键字  就是替代了  方法Say(),只有这个MyDelegate会用,并且只用一次

 

 

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace 匿名委托

{

    class Program

    {

        #region 没有参数的匿名委托(1)

        //public delegate void MyDelegate();

        //static void Main(string[] args)

        //{

        //    MyDelegate mdl = delegate() { Console.WriteLine("我很帅!"); };

 

        //    mdl();//调用方法

        //    Console.ReadKey();

        //}

        //public static void Say()

        //{

        //    Console.WriteLine("wo hen piao liang !");

        //}

        #endregion

 

        #region 有参数的匿名委托

        //public delegate void MyDelegate(int num1);

        //static void Main(string[] args)

        //{

        //    MyDelegate mdl = delegate(int n) { Console.WriteLine(n + 100); };

        //   mdl(121);//理解:mdl其实就是声明出来的一个方法

        //}

       

        #endregion

 

        #region 没有参数的简写的匿名委托写法(1)<简写>

 

        //public delegate void MyDelegate();

        //static void Main(string[] args)

        //{

        //    MyDelegate mdl = () => { Console.WriteLine( "简写的无参数的匿名委托写法") ;};

        //    mdl();

        //    Console.ReadKey();

        //}

        #endregion

 

        #region 有参数的匿名委托<简写>

        //public delegate int  MyDelegate(int n1,int n2);

        //static void Main(string[] args)

        //{

        //    // 这里的  =([参数,参数])=>{   };就是拉姆达表达式写法,写法简单,但是以后会经常的使用!!

 

        //    MyDelegate mdl = (num1, num2) => { return num1 + num2; };//这里的mdl看作是一个声明出来的一个方法

        //    int result=mdl(100,200);//调用方法,并传进参数

        //    Console.WriteLine(result);

        //    Console.ReadKey();

        //}

 

        #endregion

 

        #region 有参数的匿名委托<简写>---应用举例说明

        public delegate string MyDelegate(string name);

        static void Main(string[] args)

        {

            // 这里的  =([参数,参数])=>{   };就是拉姆达表达式写法,写法简单,但是以后会经常的使用!!

 

            MyDelegate mdl = (XXX) => { return XXX + "你真帅!"; };//这里的mdl看作是一个声明出来的一个方法

            string result = mdl("小明");//调用方法,并传进参数

            Console.WriteLine(result);

            Console.ReadKey();

        }

 

        #endregion

 

 

    }

}

总结大纲如下:其实,简写的写法就是采用了拉姆达表达式来写的;

反编译工具查看:

 

转载于:https://www.cnblogs.com/xcl461330197/articles/4523552.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值