前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >什么是匿名委托?

什么是匿名委托?

作者头像
静心物语313
发布2020-03-24 14:34:07
6780
发布2020-03-24 14:34:07
举报
文章被收录于专栏:静心物语313的Coding

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

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

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

代码语言:javascript
复制
MyDelegate p = delegate(string s)
            {
                Console.WriteLine(s);
            };

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

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

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

代码语言:javascript
复制
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
 
 
    }
}

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

反编译工具查看:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档